Como evito que o $ PATH seja redefinido a cada vez?

2

Estou com dificuldades para configurar o PATH no meu macbook pro.

Eu segui este link para modificar minha variável de caminho.

Cada vez que eu inicio um novo terminal, recebo um PATH apontando para

/Applications/eclipse/apache-maven-3.0.5/bin

Mesmo que o .bash_profile seja o seguinte

EXPORT PATH=/usr/bin:$PATH
export PATH=/usr/local/bin:$PATH
export PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin

E /etc/paths tem o seguinte conteúdo

/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin
/Applications/eclipse/apache-maven-3.0.5/bin

Eu tentei olhar para este link também, mas não também ajuda muito

    
por KodeSeeker 04.06.2013 / 04:02

3 respostas

3

Parece que sua concha é sh. OS X's / bin / sh é uma versão do bash onde a principal diferença é que o modo POSIX é ativado por padrão. Ele não lê ~ / .bash_profile para shells de login. De man bash :

If bash is invoked with the name sh, it tries to mimic the startup behavior of historical versions of sh as closely as possible, while conforming to the POSIX standard as well. When invoked as an interactive login shell, or a non-interactive shell with the --login option, it first attempts to read and execute commands from /etc/profile and ~/.profile, in that order.

Então você poderia usar ~ / .profile ao invés de ~ / .bash_profile, mas provavelmente você só vai querer mudar o shell para um bash normal:

  • Definir inicialização > "Shells open with" para "Default login shell" se estiver configurado para outra coisa
  • Executar chsh -s /bin/bash se o shell de login padrão foi alterado

Notas sobre o encadeamento de comentários na resposta de David X:

  • Symlinking / bin / bash para / bin / sh não ajudaria. Os binários / bin / bash e / bin / sh são quase idênticos, mas o comportamento depende do nome em que o bash foi invocado.
  • Terminal e iTerm abrem novos shells como shells de login por padrão, assim, por exemplo, o bash lê ~ / .bash_profile, mas não ~ / .bashrc.
  • Contas de usuário normais não estão incluídas em / etc / passwd no OS X.
por 04.06.2013 / 10:40
1

Tenho certeza de que o PATH precisa ser definido no perfil .bashrc em vez de. *.
Tente colocar isso no seu .bash_profile (substituindo as export PATH lines):

if [ -f "$HOME/.bashrc" ]; then
    . "$HOME/.bashrc"
fi

e isso no seu .bashrc:

export PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin
    
por 04.06.2013 / 04:14
0

só tem uma única entrada lá ..... o terceiro escreveu tudo ...

export PATH=.:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:$PATH
    
por 04.06.2013 / 04:14