Jika Anda ingin mengetahui program mana yang akan dijalankan oleh nama perintah di sesi Terminal Mac Anda saat ini, tanyakan terlebih dahulu kepada zsh bagaimana ia menafsirkan nama itu, lalu cari file executable di PATH. Hal ini penting karena sebuah perintah dapat merujuk ke alias atau fungsi shell sebelum shell memeriksa file. Di macOS, shell default Terminal adalah zsh, meskipun profil Terminal atau administrator dapat memilih shell lain. Panduan Terminal Apple
Tanyakan kepada zsh arti nama perintah tersebut
Di Terminal, jalankan whence -v dengan nama perintah, tanpa argumen yang akan mengeksekusinya. Sebagai contoh:
whence -v python3
Outputnya mengidentifikasi jenis perintah yang akan digunakan zsh: ia mungkin melaporkan alias, fungsi, bawaan (builtin), atau perintah eksternal. Jika ia melaporkan alias atau fungsi, nama tersebut tidak secara langsung mengidentifikasi file executable yang akan berjalan; alias atau fungsi tersebut dapat berkembang menjadi perintah lain atau menjalankan beberapa perintah. zsh mendokumentasikan whence sebagai cara untuk melaporkan bagaimana sebuah nama akan ditafsirkan. Dokumentasi bawaan shell zsh
Untuk label jenis yang ringkas, gunakan:
whence -w python3
Jika hasilnya adalah function, periksa definisinya dengan functions python3. Jika hasilnya alias, periksa dengan alias python3. Perintah-perintah ini menampilkan definisi shell saat ini; mereka tidak mengeksekusi target tersebut. Sebuah fungsi mungkin memanggil fungsi lain atau program eksternal, jadi telusuri definisinya sampai Anda mencapai perintah yang melakukan pekerjaan sebenarnya.
Temukan file executable di PATH
Untuk menemukan file yang akan dicari zsh melalui PATH, bahkan ketika sebuah alias atau fungsi membayangi nama tersebut, gunakan:
whence -p python3
Untuk mencantumkan setiap entri PATH yang cocok, gunakan:
whence -pa python3
Opsi -p meminta zsh untuk mencari PATH terlepas dari adanya definisi tingkat shell, dan -a melaporkan semua kecocokan alih-alih hanya yang pertama. Kecocokan PATH pertama adalah file executable yang akan ditemukan zsh untuk pencarian perintah eksternal biasa. zsh juga dapat menunjukkan bagaimana tautan simbolik (symbolic link) diselesaikan dengan whence -ps python3. Dokumentasi bawaan shell zsh
Daftar PATH merupakan bagian dari lingkungan shell saat ini. Lihat direktorinya dengan print -r -- $PATH; zsh menyajikan parameter path-nya sebagai nilai yang dipisahkan titik dua dalam format ini. Perubahan pada urutan PATH dapat mengubah nama duplikat mana yang ditemukan lebih dahulu. Apple mendeskripsikan PATH sebagai daftar direktori yang dicari shell untuk perintah, dan mencatat bahwa pengaturan lingkungan shell bersifat spesifik untuk konteks eksekusinya. Apple: Menggunakan variabel lingkungan di Terminal di Mac
Periksa bagaimana perintah dijalankan
Perintah yang ditulis dengan garis miring, seperti ./python3 atau /opt/tools/python3, menentukan suatu path alih-alih meminta shell untuk mencari PATH untuk nama tersebut. Jalur relatif ./python3 berarti file di direktori saat ini. Panduan dasar baris perintah Apple menjelaskan bahwa nama tanpa garis miring di awal bersifat relatif terhadap direktori saat ini saat digunakan sebagai path, dan bahwa ./ secara eksplisit menjalankan program di direktori saat ini. Apple: Command Line Primer
Untuk nama polos seperti python3, periksa jenis shell dan kecocokan PATH-nya. Untuk path yang berisi /, periksa file yang tepat tersebut. Beri tanda kutip pada path yang mengandung spasi atau karakter meta shell saat Anda menjalankannya; misalnya, "/Applications/Tool Folder/tool". Panduan dasar Apple mendokumentasikan penggunaan tanda kutip atau karakter escape untuk karakter khusus dalam path. Cara ini menemukan file yang dipanggil tanpa mengubah cara perintah dijalankan.
Ketahui apa yang tidak dapat dibuktikan oleh pencarian ini
Sebuah pencarian mendeskripsikan resolusi shell saat ini, bukan setiap konteks eksekusi. Jendela Terminal lain dapat memiliki pengaturan PATH atau shell yang berbeda, dan suatu perintah dapat berperilaku berbeda dalam skrip, shell lain, atau aplikasi yang diluncurkan di luar Terminal. Apple mencatat bahwa jendela Terminal tidak berbagi lingkungan shell. Apple: Menggunakan variabel lingkungan di Terminal di Mac
Selain itu, menemukan pathname tidak dengan sendirinya membuktikan bahwa itu adalah proses yang pada akhirnya digunakan dalam setiap kasus: file tersebut bisa berupa tautan simbolik, skrip yang memulai program lain, atau sebuah launcher. whence -ps dapat mengungkap resolusi symlink, tetapi menelusuri perilaku lebih lanjut dari suatu skrip memerlukan pemeriksaan terhadap skrip tersebut atau dokumentasi program. Jika whence -p tidak mengembalikan path apa pun, nama tersebut tidak memiliki kecocokan PATH di shell ini; itu masih bisa berupa alias, fungsi, perintah bawaan, atau perintah yang hanya tersedia melalui path eksplisit.
Untuk pemeriksaan rutin, jalankan whence -v name terlebih dahulu, periksa alias atau fungsi apa pun, lalu gunakan whence -pa name untuk membandingkan kandidat file executable. Urutan tersebut menjawab apa yang dikenali zsh dan file mana yang akan ditemukan oleh pencarian PATH-nya.
Sumber
Mengubah shell default di Terminal di Mac — Apple Support
Shell Builtin Commands — The Z Shell
Menggunakan variabel lingkungan di Terminal di Mac — Apple Support
Command Line Primer — Apple Developer