Esecuzione di programmi: la variabile PATH
Esecuzione di programmi. La variabile PATH
Quando lanciamo un comando, generalmente scriviamo solo il suo nome invece che mettere il percorso completo. Ad esempio:
$ iceweasel
aprirà il browser web Iceweasel.
Questo è possibile grazie all'esistenza della variabile d'ambiente $PATH
, che aiuta Debian a capire dove si trovano i file eseguibili.
Vediamo come.
L'avvio di un programma richiederebbe l'indicazione del percorso, relativo o assoluto, in cui è ubicato l'eseguibile del programma stesso:
$ /bin/date dom mar 21 15:24:06 CEST 2010
Molto spesso però un normale utente non è a conoscenza dell'esatta ubicazione di un file eseguibile all'interno del filesystem, ed è in questo caso che la variabile d'ambiente $PATH
mostra tutta la sua utilità. Digitando infatti semplicemente
$ date dom mar 21 15:28:48 CEST 2010
si riesce comunque ad avviare i programmi installati.
Il sistema in questo ultimo caso è riuscito a capire il percorso dove è ubicato il comando date
perchè questo è contenuto in una delle directory configurate nella variabile di ambiente $PATH.
Richiamando questa variabile, è possibile osservare le directory predefinite(separate da due punti) in cui il sistema ricerca i file eseguibili quando non viene specificato il percorso:
$ echo $PATH /usr/local/bin:/usr/bin:/bin:/usr/bin/X11
Ricordate che il contenuto della variabile $PATH potrebbe essere diversa da sistema a sistema.
Modifica del valore di PATH
Copiamo ora il comando date
in una directory a nostra scelta all'interno della nostra home:
$ mkdir /home/utente/eseguibili $ cp /bin/date /home/utente/eseguibili/custom_date
L'unico modo per lanciare il comando custom_date
(generato dalla copia di /bin/date
) sarà quello di scrivere il path completo:
$ /home/utente/eseguibili/custom_date dom mar 21 17:46:52 CEST 2010
Se ci troviamo già all'interno della directory /home/utente/eseguibili/
possiamo lanciare custom_date
anteponendo ./
al nome dell'eseguibile:
$ cd /home/utente/eseguibili $ ./custom_date dom mar 21 17:46:52 CEST 2010
Negli ultimi due esempi abbiamo dovuto sepecificare il percorso dell'eseguibile perchè la directory /home/utente/eseguibili
non era contenuta nella variabile $PATH
. E' però possibile modificare il valore della variabile $PATH
, in questo modo:
$ export PATH="$PATH:/home/utente/eseguibili"
Per verificare il successo dell'operazione utilizziamo echo
come fatto in precedenza:
$ echo $PATH /usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/home/utente/eseguibili
Ora che la directory /home/utente/eseguibili è contenuta in
$PATH
possiamo lanciare qualsiasi comando in essa contenuto indipendentemente da dove ci troviamo nel filesystem:
$ custom_date
dom mar 21 17:59:56 CEST 2010
Se ci sono programmi con lo stesso nome in più directory contenute in $PATH
, il sistema utilizzerà il primo file che incontrerà in base all'ordine delle directory elencate in $PATH
.
In questo caso il comando which
viene in nostro aiuto, rivelandoci quale eseguibile verrà avviato per primo:
$ which date
/bin/date
$ which custom_date
/home/utente/eseguibili/custom_date
Per cambiare l'ordine di esecuzione dobbiamo modificare l'ordine delle directory elencate in $PATH
:
$ export PATH="/home/utente/eseguibili:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11"
$ echo $PATH
/home/utente/eseguibili:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11
Un trucco (sconsigliatissimo) è quello di includere la directory corrente (indicata con il carattere .) nella variabile $PATH
:
$ export PATH=".:$PATH"
$ echo $PATH
.:/home/utente/eseguibili:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11
Dopo aver fatto questo, potrete lanciare qualsiasi comando situato in qualunque posizione del nostro filesystem.
Rendere permanenti le modifiche
Quello visto fin'ora viene perso al riavvio del sistema.
Se volete mantenere al riavvio i valori customizzati delle variabili d'ambiente (nel nostro caso $PATH
) dovete esportare tale variabile tramite uno script da mettere in esecuzione all'avvio del computer, oppure utilizzando il comando export
visto fin'ora dentro file di configurazione quali /etc/bash.bashrc
(se volete agire sulle variabili di tutti gli utenti), oppure /home/vostra_user/.bashrc
(se volete modificare solo le variabili utilizzate da vostro utente).
--Ferdybassi 20:41, 22 mar 2010 (CET)