Bazen bir yürütülebilir dosyayı gölgeleyen ve argümanlarını veya çıktısını değiştiren bir işlev tanımlarım. Böylece işlev yürütülebilir ile aynı ada sahiptir ve ben işlev özyinelemeli çağırmadan işlevinden çalıştırılabilir çalıştırmak için bir yol gerekir. Örneğin, otomatik olarak çıktısını çalıştırmak fossil diffyoluyla colordiffve less -Rben kullanın:
function fossil () {
local EX=$(which fossil)
if [ -z "$EX" ] ; then
echo "Unable to find 'fossil' executable." >&2
return 1
fi
if [ -t 1 ] && [ "$1" == "diff" ] ; then
"$EX" "$@" | colordiff | less -R
return
fi
"$EX" "$@"
}
Yürütülebilir dosyanın konumu hakkında emin olsaydım, sadece yazabilirim /usr/bin/fossil. Bash /bunun bir işlev değil, yürütülebilir bir komut olduğu anlamına gelir. Ama tam yerini bilmediğim için, arama whichve sonucu kontrol etmek için başvurmak zorundayım . Daha basit bir yol var mı?
/, komutun bir işlev değil yürütülebilir bir araç olduğu anlamına gelir. ” Diyorsunuz . Açıkçası, bu doğru değil. Korkunç (ve belgesiz) bir tasarım kararı olduğuna inandığım şeyde, bash işlev adlarının eğik çizgiler içermesine izin verir. Kesikler basitçe neden/usr/bin/fossilfarklı olmaya dize gelenfossilderken yüzden,/usr/bin/fossilbu çalıştırmayı deneyin değilfossilişlevi.