Come faccio ad aggiungere una directory a $PATHin Ubuntu e rendere permanenti le modifiche?
Come faccio ad aggiungere una directory a $PATHin Ubuntu e rendere permanenti le modifiche?
Risposte:
Un percorso impostato .bash_profileverrà impostato solo in una shell di login bash ( bash -l). Se inserisci il tuo percorso .profilesarà 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
bashcome shell di login non analizza .profilese esiste .bash_profileo .bash_loginesiste. 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 .bashrcper 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 .bashrcnella tua home directory e aggiungi la seguente riga:
export PATH="/path/to/dir:$PATH"
.bashrcPer 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"?
.bashrcnon è il posto giusto per impostare le variabili di ambiente. Dovrebbero entrare .profileo .pam_environment. Vedi mywiki.wooledge.org/DotFiles
. .bashrcnon .bashrc:) o source .bashrcper 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 PATHviene 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 sudonel 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 PATHvariabile di ambiente. Per controllare eseguire env e vedere il PATHvalore nell'elenco.
Relazionato:
source /etc/environmentper 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:
$HOMEcartella..profilee 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_environmentfile nella home directory.PATH DEFAULT=${PATH}:~/android-sdk-linux/tools.Metti quella linea nel tuo ~/.bashrcfile.
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 ~/.profilefile. Probabilmente non dovresti fare entrambe le cose, poiché il percorso verrà aggiunto due volte al tuo PATHambiente se apri un terminale.
$HOME/.profileper le impostazioni personali o /etc/profileper 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 ~/.profileo ~/.pam_environment, la sessione di gnome (o qualunque DE tu usi) lo erediterà. L'aggiunta del PERCORSO ~/.bashrcha anche lo svantaggio che se si apre / esegue bash in modo interattivo da un'altra shell bash interattiva, verrà aggiunto più volte.
~/.profilesia corretto per i percorsi personali, però; ecco dove Ubuntu aggiunge la ~/bindirectory. E confesso di aver esagerato un po 'sul numero di modi - solo un po'.
~/.profilein questo caso.
Per impostarlo a livello di sistema, aggiungi la linea export PATH=/path/you're/adding:$PATHalla 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 .bashrcinvece. I terminali della GUI in Ubuntu non sono shell di login, quindi .bash_profilenon verranno eseguiti.
.bash_profile. Se bash non trova un .bash_profile(quando accedi in modo interattivo), lo cercherà .profilee lo utilizzerà invece. Di default, avrai un .profilee .bashrcin Ubuntu. Ed .profileè il posto giusto per impostare le variabili di ambiente se ignoriamo pam_env.
Nel terminal, cdathe_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/bincartella 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 /scriptsavvicinarmi alla mia $HOMEcartella. 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/environmentfile
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 .profilee 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 $PATHiniziali / 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 ~/.bashrce aggiungere la seguente riga.
. ~/.bash_profile
Quindi modifica il tuo .bash_profile di cui hai bisogno .....
.bash_profilecome ti serve". Cosa devo fare esattamente al .bash_profile?
.profileo .bash_profiledovrebbe fonte .bashrc. Non il contrario.