Anche se alcuni hanno risposto bene, vorrei aggiungere alcuni pensieri:
1) PATH viene consultato solo se l'eseguibile richiamato non contiene elementi del percorso. un secondo posto sarebbe cercato in $ PATH, ./somecommand
o /usr/bin/somecommand
, o ../../bin/somecommand
semplicemente usando le regole della directory, non PATH
Se ci sono più file eseguibili in PATH con lo stesso nome, quale è preferito?
Si ferma al primo che trova, leggendo $ PATH da sinistra a destra.
La directory corrente è inclusa nella ricerca quando viene eseguito il file?
Se la directory corrente è in PERCORSO, viene cercata. Ricorda che una directory vuota in PATH include la directory corrente. ad es. PATH =: / usr / bin (vuoto iniziale) PATH = / usr / bin: (vuoto finale) e PATH = / usr / bin :: / bin (vuoto medio) includeranno effettivamente la directory di lavoro corrente.
Supponiamo che ci sia un file con nome eseguibile.sh in una directory corrente. Funzionerebbe se viene eseguito $ eseguito e. non fa parte del PERCORSO?
Non lo troverebbe mai cercando il PERCORSO. Se la directory corrente non è in PATH, non la troverà tramite una ricerca PATH.
Detto questo (e mi dispiace aggiungere confusione) se ci fosse un alias o una funzione che eseguiva il comando, sarebbe stato eseguito. O se la tua shell avesse una cache di posizione e l'eseguibile fosse nella cache, potrebbe trovarla. Quindi, non lo troverà mai nel PERCORSO, ma potrebbe essere gestito con altri mezzi.
which <executable>
comando sarà utile in questo thread.