Come faccio ad aggiungere una directory a $PATH
in Ubuntu e rendere permanenti le modifiche?
Come faccio ad aggiungere una directory a $PATH
in Ubuntu e rendere permanenti le modifiche?
Risposte:
Un percorso impostato .bash_profile
verrà impostato solo in una shell di login bash ( bash -l
). Se inserisci il tuo percorso .profile
sarà disponibile per l'intera sessione desktop. Ciò significa che anche la metacità la utilizzerà.
Per esempio ~/.profile
:
if [ -d "$HOME/bin" ] ; then
PATH="$PATH:$HOME/bin"
fi
A proposito, puoi controllare la variabile PATH di un processo guardando il suo ambiente in /proc/[pid]/environ
(sostituisci [pid] con il numero da ps axf
). Ad esempio usaregrep -z "^PATH" /proc/[pid]/environ
bash
come shell di login non analizza .profile
se esiste .bash_profile
o .bash_login
esiste. Da man bash
:
cerca ~ / .bash_profile, ~ / .bash_login e ~ / .profile, in quell'ordine, e legge ed esegue i comandi dal primo che esiste ed è leggibile.
Vedere le risposte di seguito per informazioni su .pam_environment
, o .bashrc
per shell interattive non di accesso, oppure impostare il valore a livello globale per tutti gli utenti inserendo uno script /etc/profile.d/
o utilizzandolo /etc/X11/Xsession.d/
per influenzare la sessione di display manager.
PATH="$HOME/bin:$PATH"
Quindi lo aggiungo ad esso?
Modifica .bashrc
nella tua home directory e aggiungi la seguente riga:
export PATH="/path/to/dir:$PATH"
.bashrc
Per rendere effettive le modifiche sarà necessario eseguire il source o il logout / login (o riavviare il terminale). Per fonte il tuo .bashrc
, basta digitare
$ source ~/.bashrc
.bashrc
"? Come si "riavvia il terminale"?
.bashrc
non è il posto giusto per impostare le variabili di ambiente. Dovrebbero entrare .profile
o .pam_environment
. Vedi mywiki.wooledge.org/DotFiles
. .bashrc
non .bashrc
:) o source .bashrc
per quella materia
Il luogo consigliato per definire variabili di ambiente permanenti a livello di sistema che si applicano a tutti gli utenti è in:
/etc/environment
(che è dove PATH
viene definito il valore predefinito)
Funzionerà su desktop o console, gnome-terminal o TTY, pioggia o sole;)
Per modificare, premi Alt+ F2e digita:
gksudo gedit /etc/environment
(o apri il file usando sudo
nel tuo editor di testo preferito)
Per effettuare le modifiche, esegui . /etc/environment
. Poiché questo file è solo un semplice script verrà eseguito e assegnerà il nuovo percorso alla PATH
variabile di ambiente. Per controllare eseguire env e vedere il PATH
valore nell'elenco.
Relazionato:
source /etc/environment
per ricaricare le modifiche
Penso che il modo canonico in Ubuntu sia:
crea un nuovo file sotto /etc/profile.d/
sudo vi /etc/profile.d/SCRIPT_NAME.sh
aggiungi 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
Per i principianti completi (come me) che sono più a proprio agio con la GUI:
$HOME
cartella..profile
e fare clic su Apri con l'editor di testo .PATH="$PATH:/my/path/foo"
..profile
).$PATH:
bit che include la definizione PATH esistente
Per variabili di ambiente persistenti disponibili solo per utenti specifici. Consiglio vivamente la documentazione ufficiale di Ubuntu.
https://help.ubuntu.com/community/EnvironmentVariables
Facendo riferimento alla documentazione di cui sopra, ho configurato i miei strumenti di percorso SDK Android tramite:
~/.pam_environment
file nella home directory.PATH DEFAULT=${PATH}:~/android-sdk-linux/tools
.Metti quella linea nel tuo ~/.bashrc
file.
Viene fornito ogni volta che si apre un terminale
MODIFICA : In base ai commenti seguenti, per un'impostazione più generale che si applicherà a tutte le shell (anche quando si preme Alt- F2in Unity), aggiungere la linea al ~/.profile
file. Probabilmente non dovresti fare entrambe le cose, poiché il percorso verrà aggiunto due volte al tuo PATH
ambiente se apri un terminale.
$HOME/.profile
per le impostazioni personali o /etc/profile
per tutti gli utenti. Ma se è necessario solo per bash, suppongo che funzionerà.
~/.bashrc
, sarà disponibile solo nei terminali che apri. Ad esempio, se si preme Alt + F2 e si tenta di eseguire un comando da quella directory, non lo troverà. Se lo imposti in ~/.profile
o ~/.pam_environment
, la sessione di gnome (o qualunque DE tu usi) lo erediterà. L'aggiunta del PERCORSO ~/.bashrc
ha anche lo svantaggio che se si apre / esegue bash in modo interattivo da un'altra shell bash interattiva, verrà aggiunto più volte.
~/.profile
sia corretto per i percorsi personali, però; ecco dove Ubuntu aggiunge la ~/bin
directory. E confesso di aver esagerato un po 'sul numero di modi - solo un po'.
~/.profile
in questo caso.
Per impostarlo a livello di sistema, aggiungi la linea export PATH=/path/you're/adding:$PATH
alla fine di /etc/profile
.
Per aggiungere la directory solo per l'utente che ha effettuato l'accesso, aggiungere la stessa riga ~/.bash_profile
.
L'aggiunta a .bashrc funzionerà ma penso che il modo più tradizionale di impostare le variabili del tuo percorso sia in .bash_profile aggiungendo le seguenti righe.
PATH=$PATH:/my/path/foo
export PATH
Secondo questo thread sembra che il comportamento di Ubuntu sia leggermente diverso rispetto a RedHat e ai cloni.
.bashrc
, attaccalo .bashrc
invece. I terminali della GUI in Ubuntu non sono shell di login, quindi .bash_profile
non verranno eseguiti.
.bash_profile
. Se bash non trova un .bash_profile
(quando accedi in modo interattivo), lo cercherà .profile
e lo utilizzerà invece. Di default, avrai un .profile
e .bashrc
in Ubuntu. Ed .profile
è il posto giusto per impostare le variabili di ambiente se ignoriamo pam_env.
Nel terminal, cd
athe_directory_you_want_to_add_in_the_path
echo "export PATH=$(pwd):\${PATH}" >> ~/.bashrc
Questa non è stata una mia idea. Ho trovato questo modo per esportare il percorso in questo blog qui .
sudo vi /etc/profile.d/SCRIPT_NAME.sh
aggiungi lì
export PATH=YOUR_PATH_WITHOUT_TRAILING_SLASH:$PATH
sudo nano /etc/profile.d/SCRIPT_NAME.sh
è più facile per i principianti.
gksu gedit /etc/profile.d/SCRIPT_NAME.sh
è ancora più semplice.
Ogni volta che "installo" la mia cartella di script BASH, seguo lo schema del test per una $HOME/bin
cartella che si trova nella maggior parte dei file .profile nelle ultime versioni di Ubuntu. Ho impostato un test che sembra
if [ -d "/usr/scripts" ]; then
PATH="/usr/scripts:$PATH"
fi
Funziona quasi il 100% delle volte e mi lascia libero di cambiarlo in un editor di testo della GUI con un rapido "Sostituisci tutto", se dovessi mai decidere di /scripts
avvicinarmi alla mia $HOME
cartella. Non l'ho fatto in 6 installazioni di Ubuntu, ma c'è "sempre domani". S
BZT
Il modo consigliato per modificare il tuo PATH
è dal /etc/environment
file
Esempio di output di /etc/environment
:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
Ad esempio, per aggiungere il nuovo percorso di /home/username/mydir
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/username/mydir"
Quindi, riavvia il PC.
Variabili d'ambiente a livello di sistema
Un file adatto per le impostazioni delle variabili di ambiente che influiscono sul sistema nel suo complesso (piuttosto che su un solo utente) è / etc / environment. Un'alternativa è creare un file allo scopo nella directory /etc/profile.d.
/ Etc / environment
Questo file è specifico per le impostazioni delle variabili di ambiente a livello di sistema. Non è un file di script, ma consiste piuttosto di espressioni di assegnazione, una per riga.
Nota: l' espansione delle variabili non funziona in / etc / environment.
Maggiori informazioni possono essere trovate qui: EnvironmentVariables
Apri il tuo terminale, digita gedit .profile
e inserisci quanto segue:
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$PATH:$HOME/bin"
fi
#the following line add Bin where you dont have a Bin folder on your $HOME
PATH="$PATH:/home/mongo/Documents/mongodb-linux-i686-2.2.2/bin"
Chiudi e apri il terminale, dovrebbe funzionare.
Anche se gli script di sistema non lo usano, in nessuno dei casi in cui si desidera aggiungere un percorso (ad es. $HOME/bin
) Alla variabile d'ambiente PATH, si dovrebbe usare
PATH="${PATH:+${PATH}:}$HOME/bin"
per aggiungere (invece di PATH="$PATH:$HOME/bin"
) e
PATH="$HOME/bin${PATH:+:${PATH}}"
per anteporre (anziché PATH="$HOME/bin:$PATH"
).
Questo evita i due punti $PATH
iniziali / finali spuri quando è inizialmente vuoto, il che può avere effetti indesiderati.
Vedi ad esempio https://unix.stackexchange.com/questions/162891/append-to-path-like-variable-without-creating-leading-colon-if-unset
Per Ubuntu modificare il ~/.bashrc
e aggiungere la seguente riga.
. ~/.bash_profile
Quindi modifica il tuo .bash_profile di cui hai bisogno .....
.bash_profile
come ti serve". Cosa devo fare esattamente al .bash_profile
?
.profile
o .bash_profile
dovrebbe fonte .bashrc
. Non il contrario.