Come funziona PATH in Bash

How Does Path Work Bash



Quando digiti un comando nel terminale Linux, generalmente chiami un programma per eseguire un determinato lavoro, ad esempio ls , cd , rm , mkdir , ecc. Tutti questi programmi si trovano da qualche parte nel file system, giusto? Come fa bash a sapere dove sono questi programmi?

Qui entrano in gioco le variabili d'ambiente, in particolare la variabile PATH. Questa variabile è responsabile di dire a bash dove cercare quei programmi. Diamo un'occhiata a come funziona PATH e come visualizzare/modificare PATH.







Variabile d'ambiente e $PATH

Nella terminologia della shell, l'ambiente è un'area che la shell costruisce ogni volta che avvia una sessione. Per gestire l'ambiente, ci sono variabili d'ambiente che denotano diverse parti dell'ambiente. Il valore della variabile può essere stringa, posizione della directory, valore o altro.



PATH è una variabile d'ambiente che tiene traccia di determinate directory. Per impostazione predefinita, la variabile PATH contiene le seguenti posizioni.



  • /usr/bin
  • /usr/sbin
  • /usr/local/bin
  • /usr/local/sbin
  • /sono
  • /sbin
  • /snap/bin (se Snap è installato)

Vuoi vedere quali directory sono attualmente registrate in PATH? Avvia un terminale ed esegui il seguente comando.





$buttato fuori $PATH

Qui, il segno $ serve a denotare una variabile. Il buttato fuori Il comando stampa il valore della variabile PATH.



Ora, perché questa specifica variabile d'ambiente è così importante? È perché la shell e il sistema nel suo insieme lo trattano. La variabile PATH memorizza dove possono essere trovati gli eseguibili. Ogni volta che viene eseguito un comando, la shell cerca nelle directory PATH il file eseguibile di destinazione e lo esegue.

Ad esempio, proviamo con il buttato fuori comando. Qui, sto eseguendo un comando echo.

$buttato fuoriCiao mondo!

Dov'è il file eseguibile di buttato fuori ? Esegui il comando successivo per scoprirlo.

$quale buttato fuori

Come possiamo vedere, il buttato fuori eseguibile si trova in /usr/bin/echo. Dov'è che si trova? Scopriamolo.

$quale quale

Si trova anche in /usr/bin/which. La maggior parte degli strumenti di comando si trova nella directory /usr/bin. Qui, bash sta consultando PATH per le posizioni in cui cercare gli eseguibili di un comando.

Modifica PERCORSO

Prima di modificare il valore di PATH, è importante comprenderne la struttura. Eseguire nuovamente il comando per verificare il valore di PATH.

$buttato fuori $PATH

Notare che ciascuna delle directory è separata da un segno :.

Aggiunta di directory a PATH

Per aggiungere una directory personalizzata a PATH, prenderemo l'aiuto del file bashrc. È uno script bash speciale che bash si carica ogni volta che inizia una nuova sessione bash. Nota che il file bashrc è unico per ogni singolo utente nel sistema Linux.

Apri il file bashrc in un editor di testo. Se il file bashrc non è già presente, l'editor lo creerà automaticamente.

$sono venuto~/.bashrc

Qui, è il bashrc predefinito fornito con Ubuntu. Vai all'ultimo del file (se esiste) e aggiungi la riga seguente.

$esportare IL PERCORSO='$PATH: / '

Qui, il nuovo valore della variabile PATH sarà la vecchia variabile insieme alla nuova directory che abbiamo appena aggiunto.

Salva il file e dì a bash di ricaricarlo.

$fonte~/.bashrc

Verifichiamo se il nuovo percorso è stato aggiunto correttamente.

$buttato fuori $PATH

Ecco! PERCORSO aggiornato con successo! Ora, bash cercherà anche il nuovo percorso per gli eseguibili. Ho già uno script demo.sh sul desktop. Vediamo se bash può chiamarlo senza specificare la posizione esatta.

$demo.sh

Sì, bash può chiamarlo direttamente senza alcun problema.

Rimozione di directory da PATH

Non esiste un modo semplice per aggiungere/rimuovere directory da PATH. Lasciatemi spiegare.

Il valore di PATH è effettivamente fisso. Allora, che dire del trucco bashrc? Bashrc è uno script bash che si carica ogni volta che avvia una sessione. In bashrc, abbiamo appena dichiarato che il nuovo valore di PATH sarà il suo valore predefinito e la directory definita dall'utente. Ora, ogni volta che bash si carica, vede che bashrc sta dicendo di assegnare un nuovo valore di PATH ed è quello che fa.

Allo stesso modo, se vogliamo rimuovere una directory da PATH, dobbiamo riassegnare un diverso valore di PATH nel bashrc in modo che ogni volta che bash si avvia, utilizzi il valore modificato.

Diamo un'occhiata a questo esempio. Sono disposto a rimuovere la directory ~/Desktop dal PATH.

$buttato fuori $PATH | sed -e 's/:~/Desktop$//'

Se la directory fosse /home/wrong/dir, il comando sarebbe simile a questo.

$buttato fuori $PATH | sed -e 's/:/home/sbagliato/dir$//'

Qui, la parte interessante è lo strumento sed. Ulteriori informazioni su sed qui e qui . Per farla breve, usando sed, stiamo modificando l'output del buttato fuori comando. Ora, possiamo usare questo output modificato per cambiare il valore di PATH.

Apri bashrc in un editor di testo e aggiungi le seguenti righe. Sto intenzionalmente mantenendo le righe precedenti per dimostrare che funziona.

$esportare IL PERCORSO='$(echo $PATH | sed -e 's/:~/Desktop$//')'

In alternativa, puoi anche impostare manualmente il valore di PATH. È un processo laborioso ma più diretto e semplice.

$esportare IL PERCORSO=/usr/Locale/sbin:/usr/Locale/sono:/usr/sbin:/usr/sono:/sbin:/sono:
/usr/Giochi:/usr/Locale/Giochi:/affrettato/sono

Qui, il valore del comando sarà assegnato a PATH. Salva il file e ricarica bashrc.

$fonte~/.bashrc

Verifichiamo il risultato.

$buttato fuori $PATH

Il valore PATH è aggiornato!

Pensieri finali

In bash, la variabile PATH è importante. Qualsiasi programma che esegue la sessione bash eredita la variabile, quindi è importante che PATH includa solo le directory necessarie. L'aggiunta di più directory aggiungerà solo ridondanza al sistema.

Per vedere tutte le variabili di ambiente per bash, esegui questo comando. La prima parte del comando restituirà tutte le variabili di ambiente e la seconda parte ordinerà l'output in ordine crescente.

$env | ordinare

Vuoi rendere più piccante la tua esperienza bash? Gli alias di Bash offrono un modo unico per accelerare e rendere più piccanti le cose. Ulteriori informazioni sugli alias bash .

Divertiti!