Domanda Come aggiungere una directory al PERCORSO?


Come aggiungo una directory al $PATH in Ubuntu e rendere le modifiche permanenti?


626
2017-07-22 20:42


origine


help.ubuntu.com/community/EnvironmentVariables C'è tutto ciò che devi sapere. Ho scoperto che molti degli input qui erano errati o almeno il metodo non è stato suggerito. Questa è una grande informazione che ti permetterà di capire dove modificare la tua variabile d'ambiente in base al motivo per cui lo stai facendo e esattamente come farlo senza rovinare tutto (come ho fatto seguendo alcuni dei consigli sbagliati di cui sopra). Così lungo, e grazie per tutto il pesce! - Bus42


risposte:


Usando ~ / .profile per impostare $ PATH

Un percorso impostato in .bash_profile sarà impostato solo in una shell di login bash (bash -l). Se metti il ​​tuo percorso in .profile sarà disponibile per la tua sessione desktop completa. Ciò significa che anche la metacity lo utilizzerà.

Per esempio ~/.profile:

if [ -d "$HOME/bin" ] ; then
  PATH="$PATH:$HOME/bin"
fi

A proposito, è possibile controllare la variabile PATH di un processo osservando il suo ambiente in /proc/[pid]/environ (sostituisci [pid] con il numero da ps axf). Per esempio. uso grep -z "^PATH" /proc/[pid]/environ

Nota:

bash come una shell di login non analizza .profile se entrambi .bash_profile o .bash_login esiste. A partire dal man bash :

cerca ~ / .bash_profile, ~ / .bash_login e ~ / .profile, in quello   ordine e legge ed esegue comandi dal primo esistente   ed è leggibile

Vedere il risposte qui sotto per informazioni su .pam_environment, o .bashrc per shell interattive non di login o impostare il valore globalmente per tutti gli utenti inserendo uno script /etc/profile.d/ o usare /etc/X11/Xsession.d/ influenzare la sessione di display manager.


396
2017-07-22 22:04



Fantastico, ha funzionato. Ho visto dove aggiungerà automaticamente la cartella bin se lo faccio, così l'ho usato solo al posto degli script. TY. - justingrif
Su Xbunutu .profile non viene eseguito quindi l'ho inserito in .bashrc e funziona. - tekumara
Questo pezzo di documentazione è molto ben fatto: Documentazione ufficiale sulla variabile di ambiente. Considera di leggerlo (per non dire che è aggiornato all'ultima versione delle regole per aggiungere valori alla variabile di ambiente). - Michele
Dove in .profile aggiungiamo il percorso ?? - Vineet Kaushik
Non ho ancora idea di dove aggiungere il mio percorso extra a. Devo aggiungere l'SDK Android al mio percorso ... PATH="$HOME/bin:$PATH" Quindi lo aggiungo? - Jamie Hutber


modificare .bashrc nella tua home directory e aggiungi la seguente riga:

export PATH="/path/to/dir:$PATH"

Dovrai procurarti il ​​tuo .bashrc o logout / login (o riavviare il terminale) affinché le modifiche abbiano effetto. Per trovare il tuo .bashrc, semplicemente scrivi

$ source ~/.bashrc

255
2017-07-22 20:45



Come "ti dai" .bashrc"? Come si fa a" riavviare il terminale "? - isomorphismes
In bash è semplicemente '. .bashrc' - Ophidian
Stavo supponendo che tu fossi nella tua home directory. poiché è lì che si trova il .bashrc che vuoi modificare. - Ophidian
.bashrc non è il posto giusto per impostare le variabili d'ambiente. Dovrebbero entrare .profile o .pam_environment. Vedere mywiki.wooledge.org/DotFiles - geirha
@LaoTzu . .bashrc non .bashrc :) o source .bashrc per questo motivo - Znarkus


Il luogo consigliato per definire permanente, a livello di sistema variabili d'ambiente applicabili a tutti gli utenti è in:

/etc/environment

(che è dove l'impostazione predefinita PATH è definito)

Funzionerà su desktop o console, gnome-terminal o TTY, pioggia o sole;)

  • Per modificare, premere alt+F2 e scrivi:

    gksudo gedit /etc/environment
    

    (o apri il file usando sudo nel tuo editor di testo preferito)

Per effettuare cambiamenti, corri . /etc/environment. Poiché questo file è solo un semplice script, verrà eseguito e assegnerà il nuovo percorso al file PATH variabile d'ambiente. Per controllare eseguire env e vedere il PATH valore nell'elenco.

Relazionato:


101
2017-07-31 03:49



e quindi è necessario riavviare per rendere effettive le modifiche ... - Lee
Questo è esattamente ciò di cui avevo bisogno. Provisioning di un'immagine vm throw-away via vagabondo e necessario aggiungere nodo e npm al percorso. - Austin Pray
Per prendere le modifiche in esecuzione eseguire. / etc / environement (sì, punto, uno spazio e / etc / environment). Poiché questo file è solo un semplice script, verrà eseguito e assegnerà il nuovo percorso alla variabile d'ambiente PATH. Per controllare eseguire env e vedere il valore PATH nell'elenco. - WindRider
Avevo bisogno di correre source /etc/environment per ricaricare le modifiche - JohnnyAW


Penso che il modo canonico in Ubuntu sia:

  • crea un nuovo file sotto /etc/profile.d/

    sudo vi /etc/profile.d/SCRIPT_NAME.sh
    
  • aggiungere lì:

    export PATH="YOUR_PATH_WITHOUT_TRAILING_SLASH:$PATH"
    
  • e dargli il permesso di esecuzione

    sudo chmod a+x /etc/profile.d/SCRIPT_NAME.sh
    

54
2018-01-09 01:31



Solitamente è più sicuro aggiungere il percorso personalizzato alla fine del PERCORSO anziché all'inizio. Questo evita di sostituire accidentalmente i comandi di sistema con i tuoi programmi (o programmi dannosi di qualcun altro). Questo evita anche un sacco di confusione quando qualcun altro lavora sul tuo sistema (o ti dà consigli) e ottengono risultati inaspettati da comandi che hai "sostituito". - Joe


Per i neofiti (come me) che sono più a loro agio con la GUI:

  1. Apri i tuoi $HOME cartella.
  2. Vai a vista → Mostra file nascosti o premere Ctrl + H.
  3. Fai clic destro su .profile e fare clic su Apri con l'editor di testo.
  4. Scorri fino in fondo e aggiungi PATH="$PATH:/my/path/foo".
  5. Salvare.
  6. Disconnettersi e riconnettersi per applicare le modifiche (lasciare che Ubuntu venga effettivamente caricato .profile).

44
2017-10-24 22:05



La modifica del file .profile non è più consigliata. Puoi comunque utilizzare questo metodo per modificare il file .pam_environment: help.ubuntu.com/community/EnvironmentVariables - PulsarBlow
Grazie a @PulsarBlow! Non sono proprio sicuro di quale sia esattamente la differenza e il vantaggio però ... Questo è l'URL diretto alla sezione pertinente: help.ubuntu.com/community/... - dain
Questa risposta ha causato il mio sistema per interrompere l'accesso a causa di tutti i percorsi sottoposti a override. Utilizzando Ubuntu 16.04. - Frisbetarian
@Frisbetarian devi assicurarti di aggiungere il $PATH: bit che include la definizione PATH esistente - dain
@dain: il tuo commento mi ha salvato la vita! - Py-ser


Per variabili di ambiente persistenti disponibili solo per determinati utenti. Consiglio vivamente la documentazione ufficiale di Ubuntu.

https://help.ubuntu.com/community/EnvironmentVariables

Facendo riferimento alla documentazione di cui sopra, ho impostato il mio Strumenti di percorso dell'SDK per Android di:

  1. la creazione di ~/.pam_environment file nella home directory.
  2. il cui contenuto è PATH DEFAULT=${PATH}:~/android-sdk-linux/tools.
  3. percorso utente personalizzato aggiuntivo può essere aggiunto separando i percorsi con due punti (:).
  4. questo richiede ri-login, il che significa che è necessario disconnettersi e accedere nuovamente all'ambiente desktop.

40
2017-12-08 23:07



Questa è la migliore risposta. - Paulo Coghi


Metti quella linea nella tua ~/.bashrc file.

Viene acquisito ogni volta che apri un terminale

MODIFICARE: In base ai commenti seguenti, per un'impostazione più generale che si applicherà a tutte le shell (anche quando colpisci alt-F2 in Unity), aggiungi la linea al tuo ~/.profile file. Probabilmente non dovresti fare entrambe le cose, poiché il percorso verrà aggiunto due volte al tuo PATH ambiente se apri un terminale.


25
2017-07-31 01:08



In realtà, pensavo che avessi impostato il percorso in entrambi $HOME/.profile per le impostazioni personali, o /etc/profile per tutti gli utenti. Ma se è necessario solo per bash, suppongo che funzionerà. - Marty Fried
Se lo hai impostato ~/.bashrc, sarà disponibile solo nei terminali che apri. Per esempio. se premi Alt + F2 e provi a eseguire un comando da quella directory, non lo troverà. Se lo hai impostato ~/.profile o ~/.pam_environment, la sessione gnome (o qualsiasi DE che usi) la erediterà. Aggiunta del PERCORSO in ~/.bashrc ha anche lo svantaggio che se apri / esegui bash in modo interattivo da un'altra shell bash interattiva, verrà aggiunto più volte. - geirha
Non ci ho pensato per un po ', quindi ho fatto una ricerca, e sembra che ci siano almeno 95 modi diversi per impostare il percorso, molti dei quali sono discussi Qui. Non ho mai capito quale sia il migliore. credo ~/.profile è corretto per i percorsi personali, però; è lì che Ubuntu aggiunge il ~/bin directory. E confesso di aver esagerato un po 'sul numero di modi - solo un po'. - Marty Fried
@MartyFried, sì, per citare il bot in #bash su freenode: «La stragrande maggioranza degli script di bash, codice, tutorial e guide su Internet sono schifo. Sturgeon era un ottimista. »Usando google per il problema di bash, troverai spesso molte soluzioni semiprofessionali prima di trovarne una buona. Oh, e io andrei con ~/.profile anche in questo caso. - geirha
@geirha - Sono d'accordo sul fatto che la maggior parte delle guide su Internet in generale sono probabilmente schifo, specialmente qualsiasi cosa di Linux in quanto distro differenti, o anche versioni diverse dello stesso, fanno le cose in modo diverso. Di solito si riduce a ciò che funziona, ma la maggior parte delle persone non si rende conto che ciò che funziona è semplicemente ciò che funziona, non necessariamente ciò che è giusto o persino ciò che funzionerà sempre. Cerco di capire quale dei tanti modi è effettivamente corretto, perché odio fare le cose più di una volta - ma non è sempre facile. :) - Marty Fried