Come aggiungere una directory al tuo $ PERCORSO su Linux

Contenuti

$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.

L'editor gedit con il file

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.

L'editor gedit con il file

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.

L'editor gedit con il 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.

Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.