zsh
adalah salah satu dari beberapa shell (yang lain sedang tcsh
( which
berasal sebagai csh
skrip untuk csh
pengguna, yang juga memiliki keterbatasan, tcsh
menjadikannya builtin sebagai peningkatan)) di mana which
melakukan sesuatu yang masuk akal karena itu adalah shell builtin, tetapi entah bagaimana Anda atau OS Anda (via beberapa rc
file) memecahkannya dengan menggantinya dengan panggilan ke which
perintah sistem yang tidak dapat melakukan apa pun yang masuk akal karena tidak memiliki akses ke magang shell sehingga tidak bisa tahu bagaimana shell menginterpretasikan nama perintah .
Dalam zsh, semua which
, type
, whence
dan where
adalah builtin perintah yang semua digunakan untuk mencari tahu tentang apa perintah yang, tetapi dengan output yang berbeda. Mereka semua ada karena alasan historis, Anda bisa mendapatkan semua perilaku mereka dengan bendera yang berbeda pada whence
perintah.
Anda bisa mendapatkan detail tentang apa yang masing-masing lakukan dengan menjalankan:
info -f zsh --index-search=which
Atau ketik info zsh
, lalu bawa indeks dengan i
, dan masukkan nama builtin (selesai tersedia).
Dan hindari menggunakan /usr/bin/which
. Tidak ada shell saat ini di mana itu which
diperlukan. Seperti yang dikatakan Timothy, gunakan builtin yang disediakan oleh shell Anda untuk itu. Sebagian besar shell POSIX akan memiliki type
perintah, dan Anda dapat menggunakan command -v
hanya untuk mendapatkan path dari sebuah perintah (meskipun keduanya type
dan command -v
opsional di POSIX (tetapi tidak Unix, dan tidak lagi di LSB), mereka tersedia di sebagian besar jika tidak semua Kerang mirip Bourne yang kemungkinan besar pernah Anda temui).
(BTW, sepertinya /usr/bin
muncul dua kali di Anda $PATH
, Anda dapat menambahkan typeset -U path
ke Anda ~/.zshrc
)