Come posso modificare il mio PERCORSO in modo che le modifiche siano disponibili in ogni sessione di Terminale


53

Voglio aggiungere una directory per cercare il mio percorso di ricerca. So che devo modificare la PATHvariabile d'ambiente. Tuttavia, voglio che la modifica sia permanente, in modo che sia sempre attiva, per ogni finestra Terminale (bash) che apro.

C'è un sovraccarico di informazioni confuse e forse in conflitto in https://help.ubuntu.com/community/EnvironmentVariables

Sto usando Ubuntu 10.04. Supponiamo di voler aggiungere /usr/local/fooal mio PATH. Quale file ( .bashrc, .profile, .bash_login, ecc ...) dovrei modificare e che cosa dovrebbe la nuova linea (s) assomigliare?

Risposte:


70

Il seguente comando aggiunge un percorso al percorso corrente:

export PATH=$PATH:/my/custom/path

Se vuoi che la tua configurazione esegua questo comando ogni volta, ci sono un certo numero di posti in cui puoi metterlo. Quando effettui il login, i seguenti script verranno eseguiti in questo ordine:

/etc/profile      (which starts by loading everything in /etc/profile.d)
~/.profile        (which starts by loading ~/.bashrc if you are running bash)

Appunti

  • ~/.profile viene caricato solo se ~/.bash_profilee ~/.bash_loginNON ESISTE. Altrimenti, almeno bash, li caricherà invece. Si consiglia di utilizzare .profilee non gli script specifici di bash. Quindi, se in questi tentativi hai creato .bash_login, per favore cancellalo ora.

  • ~/.bashrcviene caricato solo se si esegue una sessione interattiva. (qualcosa con un prompt in cui puoi effettivamente digitare qualcosa).

  • ~/.bashrcviene caricato più volte, ogni volta che si apre un nuovo terminale . Quindi una nuova scheda in gnome-terminal, un nuovo terminale virtuale, ecc. Quindi, anche se non si effettua nuovamente l'accesso, .bashrcviene caricata (e quindi reimposta il suo ambiente) ogni volta che si apre una nuova shell.

  • Cose come Byobu dovrebbero davvero andare .profile, (altrimenti non funzionerà ;-)

  • Cose come i percorsi dovrebbero entrare .profilese si desidera che funzionino al di fuori delle sessioni interattive. (dire quando si preme Alt+ F2in GNOME)


Contrassegnerò questa come risposta se la aggiorni per includere la riga di esportazione richiesta che dovrebbe essere aggiunta a .profile.
Joshua Flanagan,

Questo era valido solo per gli accessi alla console (ad es. Ssh o i terminali virtuali accessibili per Ctrl + Alt + Fx). In questi giorni non sapevo che / etc / gdm / Xsession source ~ / .profile. ! Neat
Marius Gedminas,

Sì, non ho menzionato / etc / gdm / Xsession specificamente o ~ / .Xprofile perché ci sono modi migliori per avviare i programmi grafici all'avvio, il che garantisce che il resto dell'ambiente sia già caricato.
Ralf,

1
per rendere questa risposta più completa si prega di aggiungere il commento di MattH sull'approvvigionamento ~ / .profile per attivare le modifiche senza disconnessione / ciclo.
matt wilkie,

1
@schwiz: ~/.profilenon viene eseguito su ciascun terminale, viene eseguito prima, quando inizia la sessione desktop. Quello eseguito su ogni terminale è~/.bashrc
MestreLion l'

13

L'ho fatto funzionare modificando ~/.profile

Sembra che l'aggiunta di ~ / bin al mio percorso sia stato un cattivo esempio, dato che esiste già un codice in ~ / .profile per farlo automaticamente, se la directory esiste.

Per aggiungere la directory usr / local / foo al mio percorso per ogni sessione futura, aggiungo / modifico la seguente riga alla fine del mio .profile:

export PATH=$PATH:/usr/local/foo

Tuttavia, per rendere questo effetto, avevo bisogno di disconnettermi e riconnettermi (semplicemente chiudendo la finestra Terminale e aprendone una nuova NON funzionava).


4
Fatelo export PATH="$PATH:/usr/foo", nel caso abbiate mai spazi o altri personaggi speciali dentro $PATH.
Gilles 'SO- smetti di essere malvagio' il

3
È possibile ricaricare l'ambiente corrente senza disconnettersi digitando ". ~ / .Profile"
Matt H

1
@MattH: no non puoi. Se si fonte ~/.profilein un dato terminale, sarà efficace per quel terminale solo
MestreLion

@MestreLion - hai ragione. Lo stavo menzionando per comodità per l'attuale terminale. Ho dimenticato di aggiungerlo.
Matt H

Cosa succede se ho già qualcosa in PATH? Potrei aggiungerlo come funziona PATHS in Windows? Ad esempio l'ho PATH="$HOME/bin:$HOME/.local/bin:$PATH"già fatto.
Gabriel Fair,

4

Per ricaricare .profile e applicare gli effetti delle modifiche senza disconnettersi / accedere, eseguire:

source ~/.profile

questo dovrebbe essere un commento alla risposta precedente
Pavlo Zhukov,

3

È possibile aggiungere il percorso a /etc/environment, ma tenere presente che nessuna espansione della shell funzionerà; la variabile verrà impostata letteralmente sui caratteri inseriti.


Dei due metodi (aggiungendo il comando export in .profile e aggiungendo il percorso completo al PERCORSO in etc / environment), quale dovrebbe essere preferito?
Rohan Bhatia,

2

Puoi modificare il .bashrcfile nella tua $HOMEdirectory.

Alla fine di questo file, aggiungi la riga:

export PATH="$HOME/directory_to_include_in_path/:$PATH"

Puoi anche modificare il .profilefile, anche nella tua $HOMEdirectory, inclusa la seguente riga:

PATH="$HOME/directory_to_include_in_path/:$PATH"

Questo ha funzionato per me.


2
Non vedo cosa si aggiunge alle altre risposte che spiegano in modo più approfondito.
Zanna,

Questa è la risposta corretta se si desidera che le modifiche influiscano sulle finestre del terminale. La modifica .profilenon ha alcun effetto nelle finestre del terminale.
Markus Laire,

0

Se hai ohmyzsh vai alla tua home directory tramite il terminale e digita

nano .zshrc

Alla fine del file inserisci

export PATH = "$ HOME / directory_to_include_in_path /: $ PATH"

Finalmente riavvia il tuo terminale. Ha funzionato per me. Spero sia stato utile.


-3
Going through the basics, I will suggest the following steps:
1. It's recommended to set environment variables in /etc/environment
2. Open the file as superuser in an editor as it's a read only file e.g.     gedit:
gksu gedit /etc/environment
3. System will need password to open it in editable mode. Enter your superuser password and get file opened in a new gedit window. 
4. Add new line at the end of file with 
export PATH=$PATH:/usr/local/foo
5. Save and close the window. It will get command back to terminal.
6. Refresh the environment by running the following command: 
. /etc/environment
7. You may check by executing the following command:
 echo $PATH

Questo non è corretto e non funzionerà. L'espansione dei parametri non viene eseguita in/etc/environment
Zanna
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.