Come verificare quale comando viene eseguito?


9

Ho uno script di shell chiamato foo.shin /usr/local/sbin. Inoltre uso un altro script con lo stesso nome. È memorizzato in /home/user/scripts.

Entrambi i percorsi appartengono PATH. Come faccio a sapere quale di questi script viene eseguito durante la digitazione foo.shsulla riga di comando? Posso influenzarlo?

Risposte:


10

Qualche giorno fa ero soddisfatto della mia risposta. Sapevo anche che il whichcomando non veniva utilizzato per verificare l'esistenza di un comando. Ora non sono così soddisfatto della mia risposta e mi riferisco a questa grande risposta .


Con un semplice whichcomando:

which foo.sh

O un typecomando:

type foo.sh

E puoi influenzarlo con l'ordine dei percorsi nel tuo $PATHo tramite un percorso assoluto quando inizia lo script, EG

/home/user/scripts/foo.sh

Esempio

Se PERCORSO è definito come di seguito

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

E inizi una sceneggiatura o qualcos'altro che è dentro /usr/local/bine dentro /usr/bin, la sceneggiatura /usr/local/bincome una priorità più alta.


1
Parlando di bashe zshc'è anche il typebuilt-in; invece in zsh which, diversamente da bash, è un built-in (e non /usr/bin/which)
kos


@muru grazie. Un po 'lo sapevo già, ma non in modo così dettagliato. Ho aggiunto le mie opinioni alla mia risposta. Grazie ancora.
AB
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.