Introduzione
In questo tutorial, tratteremo il comando which
su Linux .
Il comando which
su Linux viene utilizzato per identificare la posizione di un determinato eseguibile che viene eseguito quando si digita il nome dell'eseguibile (comando) nel prompt del terminale. Il comando cerca il file eseguibile specificato come argomento nelle directory elencate nella variabile di ambiente PATH.
Cos'è il PATH
In Linux, PATH
è una variabile ambientale che indica alla shell e ad altri programmi quali directory cercare i file eseguibili. Consiste in un elenco di percorsi assoluti separati da due punti per le directory contenenti gli eseguibili.
Per visualizzare il contenuto della variabile PATH, utilizzare il comando echo con $PATH
come argomento:
echo $PATH
L'output sarà simile al seguente:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Come utilizzare il comando which
La sintassi per il comando which
è la seguente:
which [OPTIONS] FILE_NAME...
Ad esempio, per trovare il percorso completo del comando ping, digitare quanto segue:
which ping
L'output sarà qualcosa del genere:
/bin/ping
È inoltre possibile fornire più di un argomento al comando which
:
which netcat uptime
L'output includerà percorsi completi verso entrambi gli eseguibili netcat
e uptime
:
/bin/netcat
/usr/bin/uptime
La ricerca viene eseguita da sinistra a destra e se viene trovata più di una corrispondenza nelle directory elencate nella variabile percorso PATH
, which
stamperà solo la prima. Per stampare tutte le corrispondenze, utilizzare l'opzione -a
:
which -a touch
L'output mostrerà due percorsi completi per il comando touch
:
/usr/bin/touch
/bin/touch
Di solito uno degli eseguibili è solo uno symlink
(link simbolico) rispetto all'altro, ma in alcuni casi potresti avere due versioni dello stesso comando installate in posizioni diverse o comandi totalmente diversi usando lo stesso nome.
Conclusione
Il comando which
viene utilizzato per individuare un comando cercando il comando eseguibile nelle directory specificate dalla variabile ambientale PATH
.