which
sebenarnya adalah cara yang buruk untuk melakukan hal-hal seperti ini, karena membuat perkiraan tentang lingkungan Anda berdasarkan $SHELL
dan file startup (menurutnya) yang digunakan shell; tidak hanya kadang-kadang menebak salah, tetapi secara umum Anda tidak bisa mengatakannya untuk berperilaku berbeda. ( which
pada Ubuntu 10.10 saya tidak mengerti --skip-alias
seperti yang disebutkan oleh @ SiegeX, misalnya.) type
Menggunakan lingkungan shell saat ini daripada melihat-lihat file konfigurasi Anda, dan dapat diberitahu untuk mengabaikan bagian-bagian dari lingkungan itu, sehingga ia menunjukkan kepada Anda apa yang sebenarnya akan terjadi alih-alih apa yang akan terjadi dalam rekonstruksi shell default Anda.
Dalam hal ini, type -P
akan memotong alias atau fungsi apa pun:
$ type -P vim
/usr/bin/vim
Anda juga dapat memintanya untuk melepaskan semua lapisan, satu per satu, dan menunjukkan kepada Anda apa yang akan ditemukan:
$ type -a vim
vim is aliased to `vim -X'
vim is /usr/bin/vim
(Memperluas ini dari komentar :)
Masalahnya which
adalah biasanya ini adalah program eksternal daripada built-in shell, yang berarti ia tidak dapat melihat alias atau fungsi Anda dan harus mencoba merekonstruksi mereka dari file startup / config shell. (Jika itu adalah built-in shell, seperti yang ada di dalam zsh
tetapi tampaknya tidak bash
, itu lebih mungkin untuk menggunakan lingkungan shell dan melakukan hal yang benar.)
type
adalah perintah POSIX-compliant yang diperlukan untuk berperilaku seolah-olah itu built-in (yaitu, harus menggunakan lingkungan shell itu dipanggil dari termasuk alias lokal dan fungsi), sehingga biasanya adalah built-in.
Ini umumnya tidak ditemukan di csh
/ tcsh
, meskipun di sebagian besar versi modern itu which
adalah shell builtin dan melakukan hal yang benar; terkadang built-in what
sebagai gantinya, dan kadang-kadang tidak ada cara yang baik untuk melihat lingkungan shell saat ini dari csh
/ tcsh
sama sekali.
vim
datangnya , Anda akan menggunakanwhere vim