Esecuzione di programmi: la variabile PATH: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
(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>
$ iceweasel
$ firefox-esr
</pre>
</pre>
aprirà il browser web Iceweasel.<br/>
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> perchè questo è contenuto in una delle directory configurate nella variabile di ambiente $PATH.<br/>
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 sepecificare il percorso dell'eseguibile perchè la directory <code>/home/utente/eseguibili</code> non era contenuta nella variabile <code>$PATH</code>. E' però possibile modificare il valore della variabile <code>$PATH</code>, in questo modo:
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</pre> è contenuta in <code>$PATH</code> possiamo lanciare qualsiasi comando in essa contenuto indipendentemente da dove ci troviamo nel filesystem:
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 fin'ora viene perso al riavvio del sistema.<br/>
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 fin'ora 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).
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).
<br/><br/>
 
--[[Utente:Ferdybassi|Ferdybassi]] 20:41, 22 mar 2010 (CET)
{{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

Debian-swirl.png 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) Swirl-auth60.png Debianized 60%
Estesa da:
Verificata da:
S3v
HAL 9000 13:18, 22 mag 2015 (CEST)

Verificare ed estendere la guida | Cos'è una guida Debianized