Questão Como adicionar um diretório ao PATH?


Como eu adiciono um diretório ao $PATH no Ubuntu e fazer as mudanças permanentes?


627
2017-07-22 20:42


origem


help.ubuntu.com/community/EnvironmentVariables Há tudo que você precisa saber. Descobri que muito da entrada aqui estava incorreta ou pelo menos o método não foi sugerido. Esta é uma ótima informação que permitirá que você descubra onde modificar sua variável de ambiente com base no motivo pelo qual você está fazendo e exatamente como fazê-lo sem estragar tudo (como eu fiz depois de alguns dos conselhos ruins acima mencionados). Adeus e obrigado pelos peixes! - Bus42


Respostas:


Usando ~ / .profile para definir $ PATH

Um caminho definido em .bash_profile só será definido em um shell de login bash (bash -l). Se você colocar o seu caminho .profile estará disponível para sua sessão completa de desktop. Isso significa que até mesmo a metacidade irá usá-lo.

Por exemplo ~/.profile:

if [ -d "$HOME/bin" ] ; then
  PATH="$PATH:$HOME/bin"
fi

Btw, você pode verificar a variável PATH de um processo, olhando para o seu ambiente em /proc/[pid]/environ (substitua [pid] pelo número de ps axf). Por exemplo. usar grep -z "^PATH" /proc/[pid]/environ

Nota:

bash como um shell de login não analisa .profile se qualquer um .bash_profile ou .bash_login existe. A partir de man bash :

procura por ~ / .bash_profile, ~ / .bash_login e ~ / .profile, nesse   ordem, e lê e executa comandos do primeiro que existe   e é legível.

Veja o respostas abaixo para informações sobre .pam_environmentou .bashrc para shells não-login interativos ou defina o valor globalmente para todos os usuários, colocando um script em /etc/profile.d/ ou usar /etc/X11/Xsession.d/ para afetar a sessão de gerentes de exibição.


397
2017-07-22 22:04



Legal, isso funcionou. Eu vi onde ele iria adicionar automaticamente o bin dir, se eu fizer isso, então eu usei isso em vez de scripts. TY. - justingrif
No Xbunutu .profile não é executado, então eu o coloco no .bashrc e ele funciona. - tekumara
Esta documentação é muito bem feita: Documentação oficial sobre variável de ambiente. Considere lê-lo (para não dizer que é atualizado para a última versão das regras para adicionar valores à variável de ambiente). - Michele
Onde no .profile adicionamos o caminho ?? - Vineet Kaushik
Ainda não tenho ideia de onde adicionar minha parte extra do caminho. Preciso adicionar o android SDK ao meu caminho ... PATH="$HOME/bin:$PATH" Então eu adiciono a isso? - Jamie Hutber


Editar .bashrc no seu diretório pessoal e adicione a seguinte linha:

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

Você precisará fornecer seu .bashrc ou logout / login (ou reinicie o terminal) para que as alterações entrem em vigor. Para obter o seu .bashrc, simplesmente digite

$ source ~/.bashrc

256
2017-07-22 20:45



Como você "fonte seu .bashrc"? Como você" reiniciar o terminal "? - isomorphismes
Na festa é simplesmente '. .bashrc ' - Ophidian
Eu estava assumindo que você estava em seu diretório pessoal. desde que é onde o .bashrc você quer editar é. - Ophidian
.bashrc não é o local certo para definir variáveis ​​de ambiente. Eles devem entrar .profile ou .pam_environment. Vejo mywiki.wooledge.org/DotFiles - geirha
@LaoTzu . .bashrc não .bashrc :) ou source .bashrc para esse assunto - Znarkus


O lugar recomendado para definir permanentes, sistema amplo variáveis ​​de ambiente aplicáveis ​​a todos os usuários estão em:

/etc/environment

(que é onde o padrão PATH é definido)

Isso funcionará em desktop ou console, gnome-terminal ou TTY, faça chuva ou faça sol;)

  • Para editar, pressione Alt+F2 e digite:

    gksudo gedit /etc/environment
    

    (ou abra o arquivo usando sudo no seu editor de texto favorito)

Para efetuar as alterações, execute . /etc/environment. Como esse arquivo é apenas um script simples, ele será executado e atribuirá o novo caminho ao PATH variável de ambiente. Para verificar a execução env e ver o PATH valor na listagem.

Relacionado:


101
2017-07-31 03:49



e então você precisa reiniciar para que as alterações entrem em vigor ... - Lee
Isso é exatamente o que eu precisava. Provisionando uma imagem vm descartável via vagrant e precisava adicionar node e npm ao caminho. - Austin Pray
Para executar as alterações em vigor, execute. / etc / environement (sim, ponto, um espaço e / etc / ambiente). Como esse arquivo é apenas um script simples, ele será executado e atribuirá o novo caminho à variável de ambiente PATH. Para verificar a execução env e ver o valor PATH na listagem. - WindRider
Eu precisava correr source /etc/environment para recarregar as alterações - JohnnyAW


Eu acho que a maneira canônica no Ubuntu é:

  • criar um novo arquivo sob /etc/profile.d/

    sudo vi /etc/profile.d/SCRIPT_NAME.sh
    
  • adiciona lá:

    export PATH="YOUR_PATH_WITHOUT_TRAILING_SLASH:$PATH"
    
  • e dar permissão de execução

    sudo chmod a+x /etc/profile.d/SCRIPT_NAME.sh
    

54
2018-01-09 01:31



Geralmente, é mais seguro adicionar seu caminho personalizado ao final do PATH, em vez do início. Isso evita a substituição acidental de comandos do sistema por seus programas (ou por programas maliciosos de outra pessoa). Isso também evita muita confusão quando alguém trabalha no seu sistema (ou lhe dá conselhos) e obtém resultados inesperados de comandos que você "substituiu". - Joe


Para novatos completos (como eu) que estão mais confortáveis ​​com GUI:

  1. Abre o teu $HOME pasta.
  2. Vamos para Visão → Mostrar arquivos ocultos ou pressione Ctrl + H.
  3. Clique com o botão direito em .profile e clique em Abrir com editor de texto.
  4. Role até o final e adicione PATH="$PATH:/my/path/foo".
  5. Salve .
  6. Efetue logout e login novamente para aplicar as alterações (deixe o Ubuntu carregar .profile).

44
2017-10-24 22:05



A edição do arquivo .profile não é mais recomendada. Você ainda pode usar esse método para editar o arquivo .pam_environment, consulte: help.ubuntu.com/community/EnvironmentVariables - PulsarBlow
Obrigado @PulsarBlow! Eu não tenho certeza do que exatamente é a diferença e o benefício ... Esta é a URL direta para a seção relevante: help.ubuntu.com/community/… - dain
Essa resposta fez com que meu sistema parasse de efetuar login devido a todos os caminhos serem substituídos. Usando o Ubuntu 16.04. - Frisbetarian
@Fribetarian você tem que certificar-se de adicionar o $PATH: bit que inclui a definição de caminho existente - dain
@dain: seu comentário salvou minha vida! - Py-ser


Para variáveis ​​de ambiente persistentes disponíveis apenas para usuários específicos. Eu recomendo altamente a documentação oficial do Ubuntu.

https://help.ubuntu.com/community/EnvironmentVariables

Referindo-me à documentação acima, eu configurei meu Ferramentas de caminho do Android SDK de:

  1. criando ~/.pam_environment arquivo no diretório inicial.
  2. cujo conteúdo é PATH DEFAULT=${PATH}:~/android-sdk-linux/tools.
  3. caminho de usuário personalizado adicional pode ser adicionado separando caminhos com cólon (:).
  4. isto exige re-login, o que significa que você precisa fazer logout e fazer login novamente no ambiente de desktop.

40
2017-12-08 23:07



Esta é a melhor resposta. - Paulo Coghi


Coloque essa linha no seu ~/.bashrc Arquivo.

Ele é originado sempre que você abre um terminal

EDITAR: Com base nos comentários abaixo, para uma configuração mais geral que se aplica a todos os shells (incluindo quando você acerta Alt-F2 no Unity), adicione a linha ao seu ~/.profile Arquivo. Provavelmente não deve fazer os dois no entanto, como o caminho será adicionado duas vezes ao seu PATH ambiente, se você abrir um terminal.


25
2017-07-31 01:08



Na verdade, eu pensei que você definir o caminho em qualquer $HOME/.profile para configurações pessoais ou /etc/profile para todos os usuários. Mas se for necessário apenas para o bash, suponho que ou funcionará. - Marty Fried
Se você definir isso ~/.bashrcsó estará disponível nos terminais que você abrir. Por exemplo. Se você pressionar Alt + F2 e tentar executar um comando a partir desse diretório, ele não o encontrará. Se você definir isso ~/.profile ou ~/.pam_environment, a sessão gnome (ou qualquer DE que você use) irá herdá-la. Anexando PATH em ~/.bashrc também tem a desvantagem de que se você abrir / exec bash interativamente a partir de outro shell bash interativo, ele será anexado várias vezes. - geirha
Eu realmente não olhei para isso por um tempo, então eu fiz uma pesquisa, e parece que existem pelo menos 95 maneiras diferentes de definir o caminho, a maioria das quais são discutidas Aqui. Eu nunca descobri qual é o melhor. eu acho que ~/.profile está correto para caminhos pessoais, entretanto; é aí que o Ubuntu adiciona o ~/bin diretório. E confesso que exagerei um pouco no número de maneiras - só um pouco. - Marty Fried
@MartyFried, sim, para citar o bot em #bash em freenode: «A esmagadora maioria dos scripts bash, códigos, tutoriais e guias na Internet são péssimos. Sturgeon era um otimista. »Usando o google para o bash problem, muitas vezes você encontrará muitas soluções de meia-tarefa antes de encontrar uma boa. Ah e eu iria com ~/.profile neste caso também. - geirha
@geirha - Eu concordo que a maioria dos guias na internet em geral é provavelmente uma porcaria, especialmente qualquer coisa sobre linux, já que distribuições diferentes, ou mesmo versões diferentes do mesmo, fazem as coisas de maneira diferente. Geralmente se resume ao que funciona, mas a maioria das pessoas não percebe que o que funciona é simplesmente o que funciona, não necessariamente o que é certo ou até mesmo o que sempre funcionará. Eu tento descobrir qual das muitas maneiras está correta, porque eu odeio fazer coisas mais de uma vez - mas nem sempre é fácil. :) - Marty Fried


Para definir todo o sistema, anexe a linha export PATH=/path/you're/adding:$PATH até o final de /etc/profile.

Para adicionar o diretório apenas para o usuário conectado, acrescente a mesma linha ~/.bash_profile.


15
2017-07-22 23:20