Por que meu caminho não é atualizado * agora *?

1

Eu recentemente instalei o mais novo SDK do Qt e fui em frente e o adicionei ao meu PATH dentro do meu ~ / .bash_profile.

Eu não vejo a mudança. Eu posso source ~/.bash_profile , mas meu caminho é duas vezes mais longo, mas não consigo simplesmente abrir um novo terminal gnome e atualizar o caminho.

Por quê?

Notas: Fedora 11 executando GNU bash, versão 4.0.16 (1) - libera dentro do desktop padrão do gnome.

configuração do caminho .bash_profile:

# User specific environment and startup programs

PATH=$PATH:$HOME/bin:/opt/qtsdk-2009.03/qt/bin/:/usr/local/lib/
    
por bobby 20.07.2009 / 13:57

2 respostas

8

Quando você abre um terminal a partir de sua área de trabalho, o terminal herda o ambiente em que foi iniciado, incluindo o PATH. Quando você abre um terminal, o seguinte acontece de acordo com a documentação do Bash:

Do Manual de referência do bash

When Bash is invoked as an interactive login shell, or as a non-interactive shell with the --login option, it first reads and executes commands from the file /etc/profile, if that file exists. After reading that file, it looks for ~/.bash_profile, ~/.bash_login, and ~/.profile, in that order, and reads and executes commands from the first one that exists and is readable. The --noprofile option may be used when the shell is started to inhibit this behavior.

When a login shell exits, Bash reads and executes commands from the file ~/.bash_logout, if it exists.

E ...

When an interactive shell that is not a login shell is started, Bash reads and executes commands from ~/.bashrc, if that file exists. This may be inhibited by using the --norc option. The --rcfile file option will force Bash to read and execute commands from file instead of ~/.bashrc.

So, typically, your ~/.bash_profile contains the line

 if [ -f ~/.bashrc ]; then . ~/.bashrc; fi

after (or before) any login-specific initializations.

Portanto, para que o seu .bash_profile seja executado, você precisa fazer o login em um shell de login, talvez fazendo o ssh no host local, ou fazendo logout do seu ambiente de desktop e logando novamente.

    
por 20.07.2009 / 14:13
1

Tente colocar isso no seu ~/.bashrc .

Quando você faz login, ~/.bash_profile é processado. Ele não é processado novamente quando você abre um novo terminal ou inicia um novo shell, que é quando ~/.bashrc é processado. Você deve pesquisar ~/.bashrc no seu ~/.bash_profile .

Veja a seção "Invocação" em man bash .

    
por 20.07.2009 / 14:04