$PATH
è uno dei manipolatori silenziosi sullo sfondo del tuo computer Linux. Influisce silenziosamente sulla tua esperienza utente, ma non c'è niente di sospetto. Ti spiegheremo cosa fa e come puoi regolarlo.
Che cos'è $ PATH su Linux e come funziona?
Quando digiti un comando in una finestra di terminale e premi Invio, avvia una grande quantità di attività anche prima che il comando venga eseguito.
Provato è la shell predefinita sulla maggior parte delle distribuzioni Linux. Interpreta la riga di testo inserita e identifica i nomi dei comandi mescolati ai parametri, condutture, reindirizzamenti, e qualunque altra cosa ci sia. Dopo, individua i binari eseguibili per quei comandi e li lancia con i parametri che hai fornito.
Il primo passo che la shell compie per individuare l'eseguibile è identificare se è coinvolto un binario. Se il comando che usi è all'interno della shell stessa (un “Guscio incorporato”) non sono necessarie ulteriori ricerche.
Gli articoli della custodia incorporati sono i più facili da trovare perché sono parte integrante della custodia. È come averli su una cintura degli attrezzi: sono sempre con te.
Nonostante questo, se hai bisogno di altri loro strumenti, devi cercare in officina per trovarlo. È sul tuo banco di lavoro o su un appendiabiti a parete? Questo è ciò che $PATH
variabile d'ambiente. Contiene un elenco di luoghi in cui la shell esegue la ricerca e l'ordine in cui verranno cercati.
Se vuoi vedere se un comando è a guscio incorporato, un alias, una funzione o un mv / lavoro / un file binario separato, puoi usare il type
comando come mostrato di seguito:
digita clear
digita cd
Questo ci dice che clear
è un file binario, e il primo del percorso è a /usr/bin
. Puoi avere più di una versione di clear
installato sul tuo computer, ma questo è quello che la shell proverà a usare.
Come potremmo aspettare?, cd
è un guscio integrato.
Elencare il tuo $ IL PERCORSO
È facile vedere cosa c'è sulla tua strada. Basta digitare quanto segue per utilizzare il echo
comando e stampa il valore tenuto nel $PATH
variabile:
echo $PATH
L'output è una lista di due punti (:
) posizioni del file system delimitate. La shell cerca da sinistra a destra attraverso il percorso, controllando la posizione di ciascun filesystem per un eseguibile corrispondente per eseguire il comando.
Possiamo selezionare la nostra strada attraverso l'elenco per vedere i percorsi del file system che verranno cercati e l'ordine in cui verranno cercati:
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin
/usr/games
/usr/local/games
/snap/bin
Qualcosa che potrebbe non essere immediatamente ovvio è che la ricerca non inizia nella directory di lavoro corrente. Piuttosto, si fa strada attraverso le directory elencate, e solo le directory elencate.
Se la directory di lavoro corrente non è nel tuo percorso, non verrà cercato. Allo stesso tempo, se hai comandi memorizzati in directory che non sono nel percorso, il guscio non li troverà.
Per dimostrarlo, abbiamo creato un piccolo programma chiamato rf
. Quando corri, rf
stampa il nome della directory da cui è stato avviato nella finestra del terminale. É situato in /usr/local/bin
. Abbiamo anche una versione più recente nel /dave/work
directory.
Scriviamo quanto segue which
comando per mostrarci quale versione del nostro programma la shell troverà e utilizzerà:
quale rf
La shell riporta che la versione trovata è quella della directory che si trova nel percorso.
Scriviamo quanto segue per accenderlo:
rf
Versione 1.0 a partire dal rf
corri e conferma che le nostre aspettative erano corrette. La versione trovata ed eseguita è in /usr/local/bin
.
Per eseguire qualsiasi altra versione di rf
su questo computer, dovremo usare il percorso dell'eseguibile sulla riga di comando, come mostrato di seguito:
./lavoro/rf
Ora che abbiamo detto alla shell dove trovare la versione di rf
cosa vogliamo eseguire, usa la versione 1.1. Se preferiamo questa versione, possiamo copiarlo nel /usr/local/bin
directory e sovrascrivere quella vecchia.
Diciamo che stiamo sviluppando una nuova versione di rf
. Dovremo eseguirlo molte volte mentre lo sviluppiamo e lo testiamo, ma non vogliamo copiare una build di sviluppo non rilasciata nell'ambiente live.
O forse abbiamo scaricato una nuova versione di rf
e vogliamo fare alcuni test di verifica prima che sia disponibile pubblicamente.
Se aggiungiamo la nostra directory di lavoro al percorso, facciamo in modo che la shell trovi la nostra versione. E questo cambiamento riguarderà solo noi; altri continueranno a utilizzare la versione di rf
Su /usr/local/bin
.
Aggiungi una directory al tuo $ IL PERCORSO
Puoi usare il export
comando a aggiungi una directory al $PATH
. Dopo, la directory è inclusa nell'elenco delle posizioni del file system che la shell cerca. Quando la shell trova un eseguibile corrispondente, basta guardare, quindi devi assicurarti di guardare prima nella tua directory, prima /usr/local/bin
.
È facile da fare. Per il nostro esempio, scriviamo quanto segue per aggiungere la nostra directory all'inizio del percorso in modo che sia la prima posizione cercata:
export PERCORSO=/casa/dave/lavoro:$IL PERCORSO
Questo comando imposta $PATH
essere uguale alla directory che stiamo aggiungendo, /home/dave/work
, e poi tutto il percorso attuale.
Primo PATH
non ha il simbolo del dollaro$
). Impostiamo il valore per PATH
. La fine $PATH
ha il simbolo del dollaro perché ci riferiamo al contenuto memorizzato nel PATH
variabile. Allo stesso tempo, notare i due punti (:
) tra la nuova directory e il $PATH
nome variabile.
Vediamo com'è la strada adesso:
echo $PATH
I nostri /home/dave/work
La directory viene aggiunta all'inizio del percorso. I due punti che forniamo ti separano dal resto del percorso.
Scriviamo quanto segue per verificare la nostra versione di rf
è il primo ad essere trovato:
quale rf
Il test nel budino è in corso rf
, Come mostrato di seguito:
rf
La shell trova la versione 1.1 e lo esegue da /home/dave/work
.
Per aggiungere la nostra directory alla fine del percorso, lo spostiamo semplicemente alla fine del comando, Così:
esporta PERCORSO=$PERCORSO:/casa/dave/lavoro
Rendi permanenti le modifiche
Che cosa Beth Brooke-Marciniak disse: “Il successo va bene, ma il successo è fugace”. Nel momento in cui chiudi la finestra del terminale, eventuali modifiche apportate al $PATH
sono andati via. Per renderli permanenti, devi mettere il tuo export
comando in un file di configurazione.
Quando metti il export
comando nel tuo .bashrc
file, imposta il percorso ogni volta che apri una finestra di terminale. diverso da SSH
sessioni, per il quale devi effettuare il login, sono chiamate sessioni “Interattivo”.
Nel passato, metterei il export
comando nel tuo .profile
file per determinare il percorso per accedere alle sessioni del terminale.
Nonostante questo, troviamo che se mettiamo il export
comando in .bashrc
oh .profile
record, hai configurato correttamente il percorso per il login e le sessioni del terminale interattivo. La tua esperienza potrebbe essere diversa. Per gestire tutte le eventualità, ti mostreremo come farlo in entrambi i file.
Utilizzare il seguente comando nel /home
per modificare la directory .bashrc
procedimento:
gedit .bashrc
il gedit
L'editor si apre con l'opzione .bashrc
file caricato.
Scorri fino in fondo al file e aggiungi il seguente comando di esportazione utilizzato in precedenza:
export PERCORSO=/casa/dave/lavoro:$IL PERCORSO
Salvare il file. Prossimo, Chiudere e riaprire la finestra del terminale oppure utilizzare il comando dot
per leggere la casella di controllo .bashrc
file, nel prossimo modo:
. .bashrc
Dopo, scrivi quanto segue echo
comando per verificare il percorso:
echo $PATH
Questo aggiunge il /home/dave/work
directory all'inizio del percorso.
La procedura per aggiungere il comando al .profile
il file è lo stesso. Digita il seguente comando:
gedit .profilo
il gedit
l'editor inizia con .profile
file caricato.
Aggiungi il export
comando alla fine del file e poi salvalo. Chiudere e aprire una nuova finestra di terminale non è sufficiente per forzare il .profile
file da rileggere. Affinché le nuove impostazioni abbiano effetto, è necessario disconnettersi e accedere di nuovo o utilizzare il dot
comando come mostrato di seguito:
. .profilo
IMPARENTATO: Come modificare graficamente i file di testo in Linux con gedit
Stabilire la strada per tutti
Per determinare il percorso per tutti coloro che utilizzano il sistema, puoi modificare il /etc/profile
procedimento.
Dovrai usare sudo
, come segue:
sudo gedit /etc/profile
Quando il gedit
inizia l'editor, aggiungi il comando export alla fine del file.
Salva e chiudi il file. Le modifiche verranno applicate agli altri al successivo accesso.
Una nota sulla sicurezza
Assicurati di non aggiungere accidentalmente due punti a sinistra “:
"Al percorso, come mostrato di seguito.
Se lo fa, questo cercherà prima nella directory corrente, che presenta un rischio per la sicurezza. Supponiamo di aver scaricato un file di archivio e di averlo decompresso in una directory. Guardi i file e vedi un altro file compresso. Chiami unzip ancora una volta per estrarre quel file.
Se il primo file conteneva un file eseguibile chiamato unzip
che era un eseguibile dannoso, lo attiveresti accidentalmente al posto di quello reale unzip
eseguibile. Questo accadrebbe perché la shell cercherebbe prima nella directory corrente.
Perché, fai sempre attenzione quando scrivi il tuo export
comandi. Utilizzo echo
$ PERCORSO per rivederli per assicurarti che siano come desideri.