Esecuzione di programmi: la variabile PATH: differenze tra le versioni
(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...) |
m (iceweasel non esiste più) |
||
(7 versioni intermedie di 3 utenti non mostrate) | |||
Riga 1: | Riga 1: | ||
{{Versioni compatibili}} | |||
__TOC__ | |||
== 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: | Quando lanciamo un comando, generalmente scriviamo solo il suo nome invece che mettere il percorso completo. Ad esempio: | ||
<pre> | <pre> | ||
$ | $ firefox-esr | ||
</pre> | </pre> | ||
aprirà il browser web | aprirà il browser web Firefox.<br/> | ||
Questo è possibile grazie all'esistenza della variabile d'ambiente <code>$PATH</code>, che aiuta Debian a capire dove si trovano i file eseguibili.<br/> | Questo è possibile grazie all'esistenza della variabile d'ambiente <code>$PATH</code>, che aiuta Debian a capire dove si trovano i file eseguibili.<br/> | ||
Vediamo come.<br/> | Vediamo come.<br/> | ||
Riga 18: | Riga 20: | ||
</pre> | </pre> | ||
si riesce comunque ad avviare i programmi installati.<br/> | si riesce comunque ad avviare i programmi installati.<br/> | ||
Il sistema in questo ultimo caso è riuscito a capire il percorso dove è ubicato il comando <code>date</code> | Il sistema in questo ultimo caso è riuscito a capire il percorso dove è ubicato il comando <code>date</code> perché questo è contenuto in una delle directory configurate nella variabile di ambiente $PATH.<br/> | ||
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: | 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: | ||
<pre> | <pre> | ||
$ echo $PATH | $ echo $PATH | ||
Riga 25: | Riga 27: | ||
</pre> | </pre> | ||
Ricordate che il contenuto della variabile $PATH potrebbe essere diversa da sistema a sistema. | Ricordate che il contenuto della variabile $PATH potrebbe essere diversa da sistema a sistema. | ||
== Modifica del valore di PATH == | == Modifica del valore di PATH == | ||
Copiamo ora il comando <code>date</code> in una directory a nostra scelta all'interno della nostra home: | Copiamo ora il comando <code>date</code> in una directory a nostra scelta all'interno della nostra home: | ||
Riga 42: | Riga 45: | ||
dom mar 21 17:46:52 CEST 2010 | dom mar 21 17:46:52 CEST 2010 | ||
</pre> | </pre> | ||
Negli ultimi due esempi abbiamo dovuto | Negli ultimi due esempi abbiamo dovuto specificare il percorso dell'eseguibile perché la directory <code>/home/utente/eseguibili</code> non era contenuta nella variabile <code>$PATH</code>. È però possibile modificare il valore della variabile <code>$PATH</code>, in questo modo: | ||
<pre> | <pre> | ||
$ export PATH="$PATH:/home/utente/eseguibili" | $ export PATH="$PATH:/home/utente/eseguibili" | ||
Riga 51: | Riga 54: | ||
/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/home/utente/eseguibili | /usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/home/utente/eseguibili | ||
</pre> | </pre> | ||
Ora che la directory <code>/home/utente/eseguibili</ | Ora che la directory <code>/home/utente/eseguibili</code> è contenuta in <code>$PATH</code> possiamo lanciare qualsiasi comando in essa contenuto indipendentemente da dove ci troviamo nel filesystem: | ||
<pre> | <pre> | ||
$ custom_date | $ custom_date | ||
Riga 77: | Riga 80: | ||
</pre> | </pre> | ||
Dopo aver fatto questo, potrete lanciare qualsiasi comando situato in qualunque posizione del nostro filesystem. | Dopo aver fatto questo, potrete lanciare qualsiasi comando situato in qualunque posizione del nostro filesystem. | ||
== Rendere permanenti le modifiche == | == Rendere permanenti le modifiche == | ||
Quello visto | Quello visto finora viene perso al riavvio del sistema.<br/> | ||
Se volete mantenere al riavvio i valori customizzati delle variabili d'ambiente (nel nostro caso <code>$PATH</code>) dovete esportare tale variabile tramite uno script da mettere in esecuzione all'avvio del computer, oppure utilizzando il comando <code>export</code> visto | Se volete mantenere al riavvio i valori customizzati delle variabili d'ambiente (nel nostro caso <code>$PATH</code>) dovete esportare tale variabile tramite uno script da mettere in esecuzione all'avvio del computer, oppure utilizzando il comando <code>export</code> visto finora dentro file di configurazione quali <code>/etc/bash.bashrc</code> (se volete agire sulle variabili di tutti gli utenti), oppure <code>/home/vostra_user/.bashrc</code> (se volete modificare solo le variabili utilizzate da vostro utente). | ||
{{Autori | |||
|Autore=[[Utente:Ferdybassi|Ferdybassi]] 20:41, 22 mar 2010 (CET) | |||
|Verificata_da= | |||
:[[Utente:S3v|S3v]] | |||
:[[Utente:HAL 9000|HAL 9000]] 13:18, 22 mag 2015 (CEST) | |||
|Numero_revisori=2 | |||
}} | |||
[[Categoria:Shell]] | |||
[[Categoria:Ottimizzazione del sistema]] |
Versione attuale delle 08:50, 28 lug 2019
Versioni Compatibili Tutte le versioni supportate di Debian |
Esecuzione di programmi. La variabile PATH
Quando lanciamo un comando, generalmente scriviamo solo il suo nome invece che mettere il percorso completo. Ad esempio:
$ firefox-esr
aprirà il browser web Firefox.
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 specificare il percorso dell'eseguibile perché la directory /home/utente/eseguibili
non era contenuta nella variabile $PATH
. È 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 finora 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 finora 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).
Guida scritta da: Ferdybassi 20:41, 22 mar 2010 (CET) | Debianized 60% |
Estesa da: | |
Verificata da: | |
Verificare ed estendere la guida | Cos'è una guida Debianized |