Bazı sistemlerde which -a
tüm eşleşmeleri gösterir. Kabuğunuz bash veya zsh¹ ise, type
bunun yerine şunları kullanabilirsiniz : type foo
ilk eşleşmeyi ve type -a foo
tüm eşleşmeleri gösterir. Üç komutları type
, which
ve whence
çoğunlukla aynı şeyi yapmak; kullanılabilirlik, seçenekler ve tam olarak neyi rapor ettikleri konusunda kabuklar ve işletim sistemleri arasında farklılık gösterir. type
her zaman kullanılabilir ve olası tüm komut benzeri adları (takma adlar, anahtar kelimeler, kabuk yerleşikleri, işlevler ve harici komutlar) gösterir.
Tüm eşleşmeleri görüntülemenin tek tamamen taşınabilir yolu $PATH
kendinizi ayrıştırmaktır . İşte bunu yapan bir kabuk betiği. Bunu bir kabuk işlevi yaparsanız, (değişiklik böylece parantez içinde fonksiyon gövdesini saracak şekilde emin IFS
ve set -f
ve değişiklik işlevini kaçış yok) exit
için return
.
#!/bin/sh
set -f # disable globbing
IFS=: # break words at : only
not_found=1
for d in $PATH; do
if [ -f "$d/$x" ] && [ -x "$d/$x" ]; then
printf '%s\n' "$d/$x"
not_found=0
fi
done
exit $not_found
¹
Veya ksh 93, belgelere göre, ksh 93s + 2008-01-31 sadece ilk maçı denediğimde yazdırıyor.
which --all
.