Quando digiti un comando sulla riga di comando, in pratica stai dicendo alla shell di eseguire un file eseguibile con il nome dato. In Linux, questi programmi eseguibili come ls
, find
, file
e altri, di solito risiedono all'interno di diverse directory sul tuo sistema. Qualsiasi file con autorizzazioni eseguibili archiviato in queste directory può essere eseguito da qualsiasi posizione. Le directory più comuni che contengono programmi eseguibili sono /bin
, /sbin
, /usr/sbin
, /usr/local/bin
e /usr/local/sbin
.
Ma come fa la shell a sapere, quali directory cercare i programmi eseguibili? La shell cerca nell'intero filesystem?
La risposta è semplice. Quando si digita un comando, la shell ricerca in tutte le directory specificate nell'utente $PATH
variabile per un file eseguibile con quel nome.
Questo articolo mostra come aggiungere directory al tuo $PATH
nei sistemi Linux.
Cos'è $PATH
in Linux #
Il $PATH
La variabile ambientale è un elenco di directory delimitato da due punti che indica alla shell quali directory cercare per i file eseguibili.
Per controllare quali directory ci sono nel tuo $PATH
, puoi utilizzare sia il printenv
o echo
comando:
echo $PATH
L'output sarà simile a questo:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
Se hai due file eseguibili che condividono lo stesso nome che si trovano in due directory diverse, la shell eseguirà il file che si trova nella directory che viene prima in $PATH
.
Aggiunta di una directory al tuo $PATH
#
Ci sono situazioni in cui potresti voler aggiungere altre directory a $PATH
variabile. Ad esempio, alcuni programmi potrebbero essere installati in posizioni diverse, oppure potresti voler avere una directory dedicata per i tuoi script personali, ma essere in grado di eseguirli senza specificare il percorso assoluto dei file eseguibili. Per fare ciò, devi semplicemente aggiungere la directory al tuo $PATH
.
Supponiamo che tu abbia una directory chiamata bin
situato nella tua directory Home in cui conservi gli script della shell. Per aggiungere la directory al tuo $PATH
digita:
export PATH="$HOME/bin:$PATH"
L'export
comando esporterà la variabile modificata negli ambienti di processo figlio della shell.
Ora puoi eseguire i tuoi script digitando il nome dello script eseguibile senza dover specificare il percorso completo del file.
Tuttavia, questa modifica è solo temporanea e valida solo nella sessione della shell corrente.
Per rendere permanente la modifica, devi definire il $PATH
variabile nei file di configurazione della shell. Nella maggior parte delle distribuzioni Linux, quando avvii una nuova sessione, le variabili di ambiente vengono lette dai seguenti file:
-
File di configurazione specifici della shell globale come
/etc/environment
e/etc/profile
. Usa questo file se vuoi che la nuova directory venga aggiunta a tutti gli utenti del sistema$PATH
. -
File di configurazione specifici della shell per utente. Ad esempio, se stai usando Bash, puoi impostare il
$PATH
variabile nel~/.bashrc
file. Se stai usando Zsh il nome del file è~/.zshrc
.
In questo esempio, imposteremo la variabile nel ~/.bashrc
file. Apri il file con il tuo editor di testo e aggiungi la seguente riga alla fine:
nano ~/.bashrc
~/.bashrcexport PATH="$HOME/bin:$PATH"
Salva il file e carica il nuovo $PATH
nella sessione della shell corrente usando il source
comando:
source ~/.bashrc
Per confermare che la directory è stata aggiunta con successo, stampa il valore del tuo $PATH
digitando:
echo $PATH
Conclusione #
Aggiunta di nuove directory al tuo utente o $PATH
globale variabile è piuttosto semplice. Ciò ti consente di eseguire comandi e script archiviati in percorsi non standard senza dover digitare il percorso completo dell'eseguibile.
Le stesse istruzioni si applicano a qualsiasi distribuzione Linux, inclusi Ubuntu, CentOS, RHEL, Debian e Linux Mint.
Sentiti libero di lasciare un commento in caso di domande.