Saya telah menguji instalasi Fedora minimal. Untuk mengecek path untuk interpreter seperti python atau node, saya biasanya menggunakan which
.
Saya perhatikan which
tidak diinstal secara default. Saya bisa menambahkan paket, tapi saya ingin tahu apakah ada builtin shell yang dapat digunakan untuk melakukan tugas umum ini.
Saya menggunakan bash 4.2.
which
. Mengapa tidak menggunakan "yang"? Lalu apa yang harus digunakan?Jawaban:
Anda dapat menggunakan
type
, yang merupakan Bash bawaan:Untuk dokumentasi, lihat
help [t]ype
, yang merujuk padatype
bagian dibash
halaman manual.(
help type
mencetak halaman bantuan untuk dua bawaan yang dimulai dengan string "type", salah satunya usang dan sama sekali tidak terkait dengan ini.)sumber
type -a
diriku sendiri mengapa tanda kurung masuk[t]ype
?type -a
akan mencetak semua hal yang ditunjukkan argumen, dan bukan hanya apa yang akan dieksekusi saat mengetiknya.which
. Mengapa tidak menggunakan "yang"? Lalu apa yang harus digunakan?type -a
selalu apa yang akan dijalankannya. Saya melakukan hal yang sama seperti Glenn dan selalu menggunakantype -a
juga.type -p
tidak menunjukkan jalur jika perintah adalah alias.type -P
selalu menunjukkan jalur perintah dengan benar. kupikir. kita harus memperbarui jawaban yang diterima sebagaitype -P
@ l0b0Anda bisa menggunakan
type
ataucommand -v
. Output daritype
adalah dapat dibaca manusia; output daricommand -v
dapat dieksekusi oleh Bash.Perhatikan bahwa mereka sebenarnya sedikit berbeda.
type
dancommand
mencari nilai hash dari perintah. Artinya, jika Anda mengetikcmd
,type cmd
ataucommand -v cmd
akan memberi tahu Anda dengan tepat apa yang akan dijalankan. Mereka juga bekerja pada alias, fungsi Bash, dan Bash builtins (meskipuntype -p
akan mengabaikan ini dan hanya mengembalikan file yang benar).which
hanya melakukan pencarian di PATH. Ini berbeda karena:which
, tetapi mengeksekusi perintah itu akan menggunakan nilai hash (Anda dapat memaksa memperbarui hash di Bash denganhash -r
).Biasanya orang benar-benar menginginkan
type
, bukanwhich
, setidaknya untuk penggunaan interaktif, karena mereka menggunakannya untuk mencari tahu "dari mana datangnya perintah ini ketika saya menjalankannya?" Anda hanya harus menggunakanwhich
jika Anda benar-benar ingin melakukan pencarian PATH.sumber
command -v
adalah setara denganksh
whence
.where
,whence
, dan tentu saja jugawho
,why
, danwhen
? Kenapa tidak adawhat
?echo 'main(){printf("what\n");}' | sudo cc -x c - -o /usr/local/bin/what