Como modifico meu PATH para que as alterações estejam disponíveis em todas as sessões do Terminal


53

Quero adicionar um diretório para pesquisar meu caminho de pesquisa. Eu sei que tenho que modificar a PATHvariável de ambiente. No entanto, quero que a alteração seja permanente, para que ela esteja sempre em vigor, para todas as janelas do Terminal (bash) que eu abrir.

Há uma sobrecarga de informações confusas e possivelmente conflitantes em https://help.ubuntu.com/community/EnvironmentVariables

Estou usando o Ubuntu 10.04. Suponha que eu queira adicionar /usr/local/fooao meu PATH. Qual arquivo ( .bashrc, .profile, .bash_login, etc ...) eu deveria modificar eo que deve a nova linha (s) Look Like?

Respostas:


70

O comando a seguir adiciona um caminho ao seu caminho atual:

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

Se você deseja que sua instalação execute esse comando sempre, há vários locais onde você pode colocá-lo. Quando você efetua login, os seguintes scripts serão executados nesta ordem:

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

Notas

  • ~/.profile só é carregado se ~/.bash_profilee ~/.bash_loginNÃO EXISTE. Caso contrário, pelo menos o bash, os carregará. É aconselhável usar .profilee não os scripts específicos do bash. Portanto, se nessas tentativas você criou .bash_login, exclua-o agora.

  • ~/.bashrcserá carregado apenas se você estiver executando uma sessão interativa. (algo com um prompt onde você pode realmente digitar algo).

  • ~/.bashrcé carregado repetidamente, toda vez que você abre um novo terminal . Assim, uma nova guia no, um novo terminal virtual gnome-terminal, etc. Assim, mesmo se você não fizer login de novo, .bashrcé carregado (e, portanto, redefine seu ambiente) cada vez que você abrir um novo shell.

  • Coisas como byobu devem realmente entrar .profile, (caso contrário, não funcionará ;-)

  • Coisas como caminhos devem ser seguidas .profilese você quiser que elas funcionem fora das sessões interativas. (digamos, quando você pressiona Alt+ F2no GNOME)


Marcarei isso como a resposta se você o atualizar para incluir a linha de exportação solicitada que deve ser adicionada ao .profile.
Joshua Flanagan

Isso costumava ser válido apenas para logins no console (por exemplo, ssh ou nos terminais virtuais acessíveis por Ctrl + Alt + Fx). Eu não sabia que as fontes / etc / gdm / Xsession ~ / .profile atualmente. Arrumado!
Marius Gedminas 09/09/10

Sim, eu não mencionei o / etc / gdm / Xsession especificamente ou o ~ / .Xprofile porque existem maneiras melhores de iniciar programas gráficos na inicialização, o que garante que o restante do ambiente já esteja carregado.
Ralf

11
para tornar esta resposta mais abrangente, adicione o comentário de MattH sobre o sourcing ~ / .profile para ativar as alterações sem um ciclo de logoff / on.
Matt Wilkie

11
@ schwiz: ~/.profilenão é executado em cada terminal, é executado antes, quando a sessão da área de trabalho é iniciada. O executado em todos os terminais é~/.bashrc
MestreLion

13

Eu consegui trabalhar modificando ~/.profile

Parece que adicionar ~ / bin ao meu caminho foi um mau exemplo, pois já existe código em ~ / .profile para fazer isso automaticamente, se o diretório existir.

Para adicionar o diretório usr / local / foo ao meu caminho para cada sessão daqui para frente, adiciono / edito a seguinte linha no final do meu .profile:

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

No entanto, para fazer isso entrar em vigor, eu precisava sair e entrar novamente (simplesmente fechar a janela do Terminal e abrir uma nova NÃO funcionava).


4
Faça isso export PATH="$PATH:/usr/foo", caso você tenha espaços ou outros caracteres especiais $PATH.
Gilles 'SO- stop be evil'

3
Você pode recarregar o ambiente atual sem fazer logout digitando ". ~ / .Profile"
Matt H

11
@ MatH: não, você não pode. se você fonte ~/.profileem um determinado terminal, ele será eficaz para esse terminal única
MestreLion

@MestreLion - você está certo. Eu estava mencionando isso por conveniência para o terminal atual. Esqueceu de adicionar isso.
Matt H

E se eu já tiver algo no PATH? Eu poderia anexá-lo como o PATHS funciona no Windows? Por exemplo, eu PATH="$HOME/bin:$HOME/.local/bin:$PATH"já tenho .
Gabriel Fair

4

Para recarregar .profile e obter efeitos de alterações sem logout / login, execute:

source ~/.profile

este deve ser um comentário para a resposta anterior
Pavlo Zhukov 11/04

3

Você pode adicionar o caminho para /etc/environment, mas esteja ciente de que nenhuma expansão de shell funcionará; a variável será definida literalmente para os caracteres que você digitar.


Dos dois métodos (adicionar comando de exportação no .profile e adicionar o nome do caminho completo ao PATH no etc / environment), qual deve ser o preferido?
Rohan Bhatia

2

Você pode modificar o .bashrcarquivo no seu $HOMEdiretório.

No final deste arquivo, adicione a linha:

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

Você também pode modificar o .profilearquivo, também em seu $HOMEdiretório, incluindo a seguinte linha:

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

Isso funcionou para mim.


2
Não vejo o que isso acrescenta às outras respostas que explicam mais detalhadamente.
Zanna

Esta é a resposta correta se você deseja que as alterações afetem as janelas do terminal. Mudar .profilenão tem efeito nas janelas do terminal.
Markus Laire 01/11

0

Se você tiver ohmyzsh, vá para o seu diretório pessoal através do terminal e digite

nano .zshrc

No final do arquivo, digite

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

Finalmente, reinicie o seu terminal. Trabalhou para mim. Espero que isso tenha sido útil.


-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

Isso está incorreto e não funcionará. Expansão parâmetro não é realizado em/etc/environment
Zanna
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.