Esecuzione di programmi: la variabile PATH

Versione del 22 mar 2010 alle 19:41 di Ferdybassi (discussione | contributi) (Nuova pagina: == Esecuzione di programmi. La variabile PATH == Quando lanciamo un comando, generalmente scriviamo solo il suo nome invece che mettere il percorso completo. Ad esempio: <pre> $ icewea...)
(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)

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)