Meskipun ini telah dijawab dengan baik oleh beberapa orang lain, saya ingin menambahkan beberapa pemikiran:
1) PATH hanya dikonsultasikan jika executable yang dipanggil tidak memiliki elemen path di dalamnya. somecommand akan dicari dalam $ PATH, ./somecommandatau /usr/bin/somecommand, atau ../../bin/somecommandhanya menggunakan aturan direktori, bukan PATH
Jika ada beberapa file yang dapat dieksekusi di PATH dengan nama yang sama mana yang lebih disukai?
Itu berhenti pada yang pertama ia temukan, membaca $ PATH kiri ke kanan.
Apakah direktori saat ini termasuk dalam pencarian ketika file dieksekusi?
Jika direktori saat ini di PATH maka itu dicari. Ingatlah bahwa direktori kosong di PATH termasuk direktori saat ini. mis. PATH =: / usr / bin (terkemuka kosong) PATH = / usr / bin: (trailing empty) dan PATH = / usr / bin :: / bin (kosong tengah) semuanya akan secara efektif menyertakan direktori kerja saat ini.
Misalkan ada file dengan nama executable.sh di direktori saat ini. Apakah itu berhasil jika dijalankan $ dieksekusi dan. bukan bagian dari PATH?
Itu tidak akan pernah menemukannya dengan mencari PATH. Jika dir saat ini tidak ada dalam PATH, itu tidak akan menemukannya dengan pencarian PATH.
Yang mengatakan (dan maaf menambah kebingungan) jika ada alias atau fungsi yang menjalankan perintah, itu akan dijalankan. Atau jika shell Anda memiliki cache lokasi, dan file yang dapat dieksekusi ada di dalam cache, ia mungkin menemukannya. Jadi, ia tidak akan pernah menemukannya di PATH, tetapi dapat dijalankan dengan cara lain.
which <executable>perintah akan bermanfaat di utas ini.