Come impostare permanentemente $ PATH su Linux / Unix?

Sto cercando di aggiungere una directory al mio percorso in modo che sia sempre nel mio percorso Linux. Ho provato:

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

Funziona, tuttavia ogni volta che esco dal terminale e avvio una nuova istanza del terminale, questo percorso è perso e ho bisogno di eseguire nuovamente il comando export.

Come posso farlo in modo che questo sarà impostato in modo permanente?

Devi aggiungerlo al tuo file ~/.profile o ~/.bashrc .

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

A seconda di cosa stai facendo, potresti anche voler colbind i link simbolici ai binari:

 cd /usr/bin sudo ln -s /path/to/binary binary-name 

Nota che questo non aggiornerà automaticamente il tuo percorso per il resto della sessione. Per fare ciò, devi eseguire:

 source ~/.profile or source ~/.bashrc 

Non posso credere che nessuno abbia menzionato il /etc/environment . Il suo unico scopo è quello di memorizzare variabili d’ambiente. Originariamente la variabile $ PATH è definita qui. Questa è una copia dal mio /etc/environment :

 PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games" 

Quindi puoi semplicemente aprire questo file come root e aggiungere quello che vuoi.

Per risultati immediati, Esegui (prova come utente normale e root):

 source /etc/environment && export PATH 

AGGIORNARE:

Se usi zsh (ovvero Z Shell), aggiungi questa linea subito dopo i commenti in /etc/zsh/zshenv :

 source /etc/environment 

Ho incontrato questo piccolo capriccio su Ubuntu 15.10, ma se il tuo zsh non sta ottenendo il PERCORSO corretto, questo potrebbe essere il motivo per cui

Ci sono diversi modi per farlo. La soluzione reale dipende dallo scopo.

I valori delle variabili vengono generalmente memorizzati in un elenco di assegnazioni o in uno script della shell eseguito all’inizio del sistema o della sessione utente. Nel caso dello script della shell devi usare una specifica syntax della shell.

Sistema largo

  1. /etc/environment Elenco di incarichi unici. Perfetto per aggiungere directory di sistema come /usr/local/something/bin alla variabile PATH o definire JAVA_HOME .
  2. /etc/xprofile Script Shell eseguito durante l’avvio della sessione del sistema X Window. Questo viene eseguito per ogni utente che accede a X Window System. È una buona scelta per le voci PATH valide per ogni utente come /usr/local/something/bin . Il file è incluso in un altro script, quindi utilizza la syntax della shell POSIX e non la syntax della shell dell’utente.
  3. /etc/profile e /etc/profile.d/* Script di shell. Questa è una buona scelta per i sistemi solo shell. Questi file sono letti solo dalle shell.
  4. /etc/.rc . Script di shell Questa è una scelta sbagliata perché è specifica per singola shell.

Sessione utente

  1. ~/.pam_environment . Elenco di incarichi unici. Caricato da PAM all’inizio di ogni sessione utente irrilevante se si tratta di una sessione o shell del sistema X Window. Non è ansible fare riferimento ad altre variabili, tra cui HOME o PATH quindi l’uso è limitato.
  2. ~/.xprofile script di shell. Questo viene eseguito quando l’utente accede al sistema X Window System. Le variabili qui definite sono visibili ad ogni applicazione X. Scelta perfetta per estendere il PATH con valori come ~/bin o ~/go/bin o definire GOPATH o NPM_HOME specifici NPM_HOME . Il file è incluso in un altro script, quindi utilizza la syntax della shell POSIX e non la syntax della shell dell’utente. L’editor di testo grafico o IDE avviato tramite collegamento vedrà quei valori.
  3. ~/.profile script di shell. Sarà visibile solo per i programmi avviati da terminale o emulatore di terminale. È una buona scelta per i sistemi solo shell.
  4. ~/.rc . Script di shell Questa è una scelta sbagliata perché è specifica per singola shell.

Documentazione specifica di distribuzione

  • Ubuntu
  • Archlinux

Metti la dichiarazione di export in ~/.bashrc . Il mio .bashrc contiene questo:

 export PATH=/var/lib/gems/1.8/bin:/home/fraxtil/.bin:$PATH 

Puoi impostare $PATH in modo permanente in 2 modi.

  1. Per impostare il percorso per un particolare utente: Potrebbe essere necessario inserire la voce in .bash_profile nella directory home dell’utente.

    per esempio nel mio caso imposterò il percorso java nel profilo utente tomcat

     [tomcat]$ echo "export PATH=$PATH:/path/to/dir" >> /home/tomcat/.bash_profile 
  2. Per impostare un percorso comune per TUTTI gli utenti del sistema, potrebbe essere necessario impostare un percorso come questo:

     [root~]# echo "export PATH=$PATH:/path/to/dir" >> /etc/profile 

Puoi utilizzare su Centos o RHEL per l’utente locale:

 echo $"export PATH=\$PATH:$(pwd)" >> ~/.bash_profile 

Questo aggiunge la directory corrente (o puoi usare un’altra directory) al PERCORSO, rendendolo permanente ma ha effetto al successivo accesso dell’utente.

Se non vuoi eseguire un nuovo accesso, puoi utilizzare:

 source ~/.bash_profile 

Questo ricarica l’ # User specific environment and startup programs questo commento è presente in .bash_profile

È ansible aggiungere tale riga al file di configurazione della console (ad esempio .bashrc) o al file .profile

Penso che il modo più elegante sia:

1.aggiungi questo in ~ / .bashrc file Esegui questo comando

gedit ~ / .bashrc

aggiungi il tuo percorso al suo interno

export PATH = $ PATH: / opt / node / bin

2.source ~ / .bashrc

(Ubuntu)

Ieri mi sono imbattuto in questa domanda mentre cercavo un modo per aggiungere una cartella contenente i miei script al PERCORSO – e sono rimasto sorpreso di scoprire che il mio file ~/.profile (su Linux Mint 18.1) conteneva già questo:

 # set PATH so it includes user's private bin if it exists if [ -d "$HOME/bin" ] ; then PATH="$HOME/bin:$PATH" fi 

Quindi, tutto quello che dovevo fare era creare la cartella ~/bin e inserire i miei script lì.

i file in cui si aggiunge il comando di esportazione dipendono se si è in modalità login o non-login.

se si è in modalità login, i file che si cercano sono / etc / bash o /etc/bash.bashrc

se sei in modalità non-login, stai cercando il file /.profile o i file all’interno della directory /.profiles.d

i file menzionati sopra se sono le variabili di sistema.

Zues77 ha l’idea giusta. L’OP non ha detto “come posso incappare in questo modo”. OP voleva sapere come aggiungere in modo permanente a $ PATH:

 sudo nano /etc/profile 

Questo è dove è impostato per tutto ed è il posto migliore per cambiarlo per tutte le cose che necessitano di $ PATH

Puoi anche impostare in modo permanente, modificando uno di questi file:

/etc/profile (per tutti gli utenti)

~/.bash_profile (per utente reale)

~/.bash_login (per utente reale)

~/.profile (per utente reale)

È anche ansible utilizzare /etc/environment per impostare una variabile di ambiente PATH permanente, ma non supporta l’espansione delle variabili .

Estratto da: http://www.sysadmit.com/2016/06/linux-anadir-ruta-al-path.html

La mia risposta è in riferimento all’impostazione di go-lang su Ubuntu linux/amd64 . Ho affrontato lo stesso problema di impostare il percorso delle variabili di ambiente ( GOPATH e GOBIN ), di perderlo all’uscita del terminale e di ricostruirlo usando la source ogni volta. L’errore è stato inserire il percorso ( GOPATH e GOBIN ) nella cartella ~/.bash_profile . Dopo aver perso alcune ore buone, ho trovato che la soluzione era mettere GOPATH e GOBIN nel file ~/.bash_rc nel modo seguente:

 export GOPATH=$HOME/go export GOBIN=$GOPATH/bin export PATH=$PATH:$GOPATH:$GOBIN 

e così facendo, l’installazione di go funzionava bene e non c’erano perdite di percorso.

EDIT 1: Il motivo per cui questo problema può essere correlato è che le impostazioni per shell non di login come il tuo terminale Ubuntu o gnome-terminal dove eseguiamo il codice go sono prese dal file ~./bash_rc e le impostazioni per le shell di login sono prese dal file ~/.bash_profile e dal file ~/.profile se il file ~/.bash_profile non è raggiungibile.

Aggiungi permanentemente la variabile PATH

Globale:

 echo "export PATH=$PATH:/new/path/variable" >> /etc/profile 

Locale (solo per utente):

 echo "export PATH=$PATH:/new/path/variable" >> ~/.profile 

Per il riavvio globale . Per il relogin locale .

Esempio

Prima:

 $ cat /etc/profile #!/bin/sh export PATH=/usr/bin:/usr/sbin:/bin:/sbin 

Dopo:

 $ cat /etc/profile #!/bin/sh export PATH=/usr/bin:/usr/sbin:/bin:/sbin export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/new/path/variable 

In alternativa puoi semplicemente modificare il profilo:

 $ cat /etc/profile #!/bin/sh export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/new/path/variable 

Un altro modo (grazie gniourf_gniourf):

 echo 'PATH=$PATH:/new/path/variable' >> /etc/profile 

Non dovresti usare le virgolette qui! echo ‘export PATH = $ PATH: / new / percorso / variabile’ … E a proposito, la parola chiave export è molto probabilmente inutile in quanto la variabile PATH è molto probabilmente già contrassegnata come esportata. – gniourf_gniourf

Aggiungi alla cartella /etc/profile.d script [name_of_script].sh con riga: export PATH=$PATH:/dir . Ogni script nella cartella /etc/profile.d viene automaticamente eseguito da /etc/profile all’accesso.

il modo migliore è la seguente:
PATH=":$PATH"
nel tuo file .bashrc nella directory home.
Non verrà ripristinato anche se si chiude il terminale o si riavvia il PC. È permanente

Penso che il modo più elegante sia:

1.add questo in ~. / Bashrc file

 if [ -d "new-path" ]; then PATH=$PATH:new-path fi 

2.source ~ / .bashrc

(Ubuntu)

un modo per aggiungere un percorso permanente, che ha funzionato per me, è: cd /etc/profile.d touch custom.sh vi custom.sh export PATH = $ PATH: / percorso in base alle impostazioni / riavvio del computer e qui andiamo percorso ci saranno applausi in modo permanente.

Per la distribuzione debian, devi:

  - edit ~/.bashrc eg: vim ~/.bashrc - add export PATH=$PATH:/path/to/dir - then restart your computer. Be aware that if you edit ~/.bashrc as root, your environment variable you added will work only for root 

Può essere aggiunto direttamente utilizzando il seguente comando:

echo ‘export PATH = $ PATH: / new / directory’ >> ~ / .zshrc source ~ / .zshrc