Bazı sistemlerde which -atüm eşleşmeleri gösterir. Kabuğunuz bash veya zsh¹ ise, typebunun yerine şunları kullanabilirsiniz : type fooilk eşleşmeyi ve type -a footüm eşleşmeleri gösterir. Üç komutları type, whichve 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. typeher 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 $PATHkendinizi 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 IFSve set -fve değişiklik işlevini kaçış yok) exitiç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.