Come settare le variabili $PATH in linux. Dov’è l’eseguibile?

$PATH

Quando si digita un comando nel prompt dei comandi in Linux, o in altri sistemi operativi simili a Linux, tutto quello che si fa è dirgli di eseguire un programma. Anche i comandi semplici, come ls, cd, mkdir, rm e altri sono solo piccoli programmi che di solito vivono all’interno di una directory sul vostro computer chiamata /usr/bin. Ci sono anche altri posti sul vostro sistema che comunemente contengono programmi eseguibili.

Alcuni  si trovano in  /usr/local/bin, /usr/local/sbin e /usr/sbin. Sappiate che un programma eseguibile può risiedere praticamente ovunque sul vostro computer: non deve essere limitato a una di queste directory.
Quando si digita un comando nella shell di Linux, non si cerca in ogni directory per vedere se c’è un programma con quel nome, solo quelli che si specificano. Come fa a sapere di guardare nelle directory menzionate sopra? È semplice: Sono una parte di una variabile d’ambiente, chiamata $PATH, che la vostra shell controlla per sapere dove guardare per trovare il file/programma desiderato.

A volte, potreste voler installare programmi in altre posizioni sul vostro computer, ma essere in grado di eseguirli facilmente senza specificare la loro esatta posizione. Potete farlo facilmente aggiungendo una directory al vostro $PATH.

variabili $PATH

Per vedere cosa c’è nel vostro $PATH in questo momento, digitate:

echo $PATH

variabili $PATH
variabili $PATH



Probabilmente vedrete le directory menzionate sopra, così come forse anche alcune altre, e sono tutte separate da colon. Ora aggiungiamo un’altra directory alla lista.

Supponiamo che abbiate scritto un piccolo script di shell chiamato hello.sh e che lo troviate in una directory chiamata /place/with/the/file. Questo script fornisce qualche utile funzione a tutti i file della vostra directory corrente, che vorreste poter eseguire indipendentemente dalla directory in cui vi trovate.

Basta aggiungere /luogo/del/file/file alla variabile $PATH con il seguente comando:

export PATH=$PATH:/luogo/del/file/file

Ora dovreste essere in grado di eseguire lo script in qualsiasi punto del vostro sistema semplicemente digitandone il nome, senza dover includere il percorso completo mentre lo digitate.

Ma cosa succede se si riavvia il computer o si crea una nuova istanza di terminale? La vostra aggiunta al percorso è andata! Questo è stato progettato. La variabile $PATH è impostata dalla vostra shell ogni volta che viene lanciata, ma potete impostarla in modo che includa sempre il vostro nuovo percorso con ogni nuova shell che aprite. Il modo esatto per farlo dipende da quale shell si sta eseguendo.

Non siete sicuri di quale shell state eseguendo? Se state usando praticamente qualsiasi distribuzione Linux comune, e non avete cambiato le impostazioni predefinite, è probabile che stiate eseguendo Bash. Ma potete confermarlo con un semplice comando:

echo $SHELL

$SHELL
$SHELL – variabili $PATH

Per Bash, è sufficiente aggiungere la riga dall’alto, esportare PATH=$PATH:/luogo/del/file/file, nel file appropriato che verrà letto al lancio della shell. Ci sono alcuni posti diversi in cui è possibile impostare il nome della variabile: potenzialmente in un file chiamato ~/.bash_profile, ~/.bashrc, o ~/.profile. La differenza tra questi file è (principalmente) quando vengono letti dalla shell. Se non si è sicuri di dove metterlo, ~/.bashrc è SEMPRE una buona scelta 🙂 .

Per le altre shell, si vorrà trovare il posto appropriato per impostare una configurazione all’inizio; la configurazione di ksh si trova tipicamente in ~/.kshrc, zsh  è in ~/.zshrc, ecc.

Che la SHELL sia con voi !