Cos'è la variabile PATH Unix e come posso aggiungerla?


11

Molti tutorial di programmazione chiedono agli utenti di aggiungere qualcosa al loro PATHma non spiegano di cosa si tratta. Le risorse esistenti che spiegano PATHagli utenti nuove alla riga di comando non sono molto buone.

  • Cos'è la PATHvariabile Unix ?

  • Ho appena scaricato un programma, quindi ho provato a eseguire un comando nel terminale e ho ottenuto command not found. Cosa c'entra questo con il PATH?

  • Ho aggiunto qualcosa al PATHcon questo comando e poi le cose hanno funzionato:

    export PATH=/path/to/some/bin:$PATH
    

    ... ma poi sono command not foundtornato alla prossima accensione del computer. Come posso farlo rimanere PATHogni volta che apro il Terminale?

  • Qual è il modo migliore per determinare se un programma come Git o gccè già caricato sul mio computer?


3
Ho letto molte delle risposte su SO e non ho trovato una risposta che risponda a tutte queste domande in un modo che un principiante possa capire. Voglio qualcosa a cui posso collegare nuovi utenti della riga di comando. Speravo di aggiungerlo come wiki della community e di attribuirgli una generosa ricompensa.
Kevin Burke,

4
Scommetto che posso trovare 50 risultati se cerco su Google questa domanda. Perché non puoi
trojanfoe,

2
E se nessuno di questi link punta a SO per una domanda qualificata per essere qui, allora dovrebbe essere aggiunta qui. Vogliamo che SO sia dove Google va per domande di programmazione.

Si prega di consultare questo post MSO per le motivazioni di Kevin nel porre questa domanda. Molto probabilmente effettuerà una modifica per chiarire come queste informazioni siano utili.
jmort253,

1
@ jmort253: Beh, dovrebbe iniziare a farlo rapidamente. 4/5 voti stretti. Non chiuderò perché so che vuole modificare la domanda, ma è meglio che lo faccia rapidamente.
Madara's Ghost,

Risposte:


17

Il percorso UNIX è una variabile di ambiente che è un elenco di directory in cui cercare i programmi che si sta tentando di eseguire. Ti consente di evitare di dover utilizzare il percorso completo per eseguire cose come /bin/ls(ad esempio inserendo /binil percorso).

Ad esempio, un percorso può essere costituito da:

/bin:/usr/bin:/usr/sbin

e ciò significa che, quando si digita il comando xyzzy, tenterà di eseguire il primo file trovato dall'elenco corrente:

/bin/xyzzy
/usr/bin/xyzzy
/usr/sbin/xyzzy

( può saltare i file non eseguibili se è intelligente).

Puoi aggiungere elementi al percorso con un comando come:

set PATH=/directory/to/add:$PATH:/low/priority/path

che posiziona /directory/to/addall'inizio dell'elenco di ricerca percorsi e /low/priority/pathalla fine.

Tuttavia, questo di solito cambia solo per la shell corrente . Se si desidera apportare una modifica in ogni shell, è necessario aggiungere quella riga a uno dei file di avvio, come $HOME/.profileo /etc/profile. Il file corretto da utilizzare dipende dalla shell stessa e da come sono stati impostati i file di avvio. Non è sempre facile dire dove dovrebbe andare, ma le regole sono generalmente spiegate nella manpage per qualunque shell tu stia usando.

Di solito puoi trovare un comando nel percorso con uno di:

which cmd
whence cmd

per individuare l' cmdeseguibile. Ad esempio, sul mio sistema Debian, ottengo la seguente trascrizione:

pax> which ls
/bin/ls

pax> which firefox
/usr/bin/firefox

pax> which xyzzy

pax> 

1
Questa domanda appartiene a StackOverflow?
trojanfoe,

@trojanfoe, per quanto faccia qualsiasi domanda relativa alla shell, sì, la penso così. Si tratta anche di un linguaggio di programmazione.

Ho modificato la risposta da utilizzare :come separatore, come viene utilizzato su * nix. Windows utilizza ;(probabilmente perché :ha già un significato in C:).
Joachim Sauer l'

In realtà, @Joachim, è forse più corretto affermare che una determinata shell (piuttosto che UNIX stesso) ha un separatore di directory specifico, ma hai ragione per tutti quelli che uso dalla cima della mia testa. Grazie per la correzione, evviva.

@paxdiablo: sì, ci ho pensato ma anche io non riesco a pensare a nessuna shell unix che non usa :(in Java, ad esempio, path.separatorè sempre :su * nix).
Joachim Sauer,

5

Cosa è?

La variabile d'ambiente PATH è un elenco di directory delimitate da due punti che la shell cerca quando si immette un comando.

Come impostarlo?

PATH=$PATH:/your/directory
export PATH

Come posso farlo rimanere sul PERCORSO ogni volta che apro il Terminale?

Inserisci le due righe precedenti all'interno ~/.bash_profile(se stai usando bashper il Terminale).


3

PATH è una variabile d'ambiente per sistemi unix-like.

impostare il percorso:

export PATH=$PATH:<your path>

percorso non impostato:

unset $PATH

impostare il percorso in modo permanente

nella tua cartella home, abilita Visualizza -> Mostra file nascosti .... pen .bash_profile file, prima di esportare la linea PATH, aggiungi questa linea .....

PATH=$PATH:<yourpath>

disconnettersi e accedere di nuovo ...... verificare se funziona ... bene! dovrebbe funzionare.....


1
Ci scusiamo per il downvote, ma questo è mal formattato e formulato. Cerca di evitare un uso eccessivo di grassetto, un uso eccessivo dei puntini di sospensione ("...") e scrivi frasi complete. Ciò dovrebbe aiutare a evitare tali downgrade in futuro.
Joachim Sauer,

1
@Joachim Sauer perché non modifichi la risposta? Perché preferisci ridimensionarlo?

1
@MikroDel: perché ci sono già risposte migliori e di qualità più elevata a questa domanda e il downvoting richiede meno sforzi. Se questa fosse l'unica risposta, probabilmente l'avrei modificata. Inoltre: sebbene di solito non siano divertenti, i downgrade sono strumenti legittimi (sì, ci sono frecce su e giù accanto a ogni domanda / risposta).
Joachim Sauer,

1
modificare o pubblicare questo commento richiede quasi lo stesso tempo, ma modifica

@MikroDel: quindi spiegare il ragionamento alla base di un downvote non aiuta l'utente? Penso di essere stato abbastanza chiaro sul mio ragionamento e di aver dato consigli pratici su come migliorare la qualità. L'unica cosa che la tua insistenza fa riduce la mia volontà di spiegare i miei voti negativi (e come puoi vedere nel mio profilo, non voto eccessivamente).
Joachim Sauer l'
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.