Pada beberapa sistem, which -a
tampilkan semua kecocokan. Jika shell Anda adalah bash atau zsh¹, Anda dapat menggunakan type
sebagai gantinya: type foo
menunjukkan kecocokan pertama dan type -a foo
menampilkan semua kecocokan. Tiga perintah type
, which
dan whence
sebagian besar melakukan hal yang sama; mereka berbeda antara cangkang dan sistem operasi dalam ketersediaan, opsi, dan apa yang sebenarnya mereka laporkan. type
selalu tersedia dan menampilkan semua kemungkinan nama seperti perintah (alias, kata kunci, built-in shell, fungsi, dan perintah eksternal).
Satu-satunya cara yang sepenuhnya portabel untuk menampilkan semua pertandingan adalah mengurai $PATH
sendiri. Inilah skrip shell yang melakukan ini. Jika Anda menjadikannya fungsi shell, pastikan untuk melampirkan badan fungsi di dalam tanda kurung (sehingga perubahan ke IFS
dan set -f
tidak keluar dari fungsi), dan ubah exit
ke 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
¹
Atau ksh 93, menurut dokumentasi, meskipun ksh 93s + 2008-01-31 hanya mencetak kecocokan pertama ketika saya mencoba.
which --all
.