2009-11-11 18:48:39 +0000 2009-11-11 18:48:39 +0000
141
141

Onde é que o $PATH é fixado em OS X 10.6 Snow Leopard?

Digito echo $PATH na linha de comando e recebo

/opt/local/bin:/opt/local/sbin:/Users/andrew/bin:/usr/local/bin:/usr/local/mysql/bin:/usr/local/pear/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/opt/local/bin:/usr/local/git/bin

pergunto-me onde é que isto está a ser configurado uma vez que o meu ficheiro .bash_login está vazio.

Estou particularmente preocupado que, depois de instalar o MacPorts, tenha instalado um monte de lixo em /opt. Não creio que esse directório exista sequer numa instalação normal do Mac OS X.

Atualização: Obrigado a jtimberman por corrigir a minha declaração echo $PATH

Respostas (7)

161
161
161
2009-11-11 20:57:32 +0000

Quando bash começa, lê os seguintes ficheiros cada vez que faz o login. Para efeitos de OS X, isto significa cada vez que se abre uma nova janela Terminal.

/etc/profile
~/.bash_profile
~/.bash_login (if .bash_profile does not exist)
~/.profile (if .bash_login does not exist)

Quando inicia uma nova shell digitando bash na linha de comando, lê .bashrc

OS X também usa ~/.MacOSX/environment.plist para definir mais variáveis de ambiente, incluindo caminhos, se necessário.

& Finalmente, /etc/paths e /etc/paths.d são lidos também pela shell.


/opt/local/bin etc. são adicionados em ~/.tcshrc por MacPorts. Não se esqueça também de procurar em ~/.cshrc.

25
25
25
2011-03-25 18:07:37 +0000

A sério, o Leopardo deu-nos uma nova forma de acrescentar caminho. Basta criar um ficheiro contendo a parte do caminho que pretende adicionar, e colocá-lo em /etc/paths.d

Um exemplo rápido de como fazer isto num só passo é:

echo "/some/path/to/add" >> /etc/paths.d/somefilename

Caso contrário, pode simplesmente ir a /etc/paths.d e colocar o ficheiro lá directamente. De qualquer modo, quaisquer partes do caminho nos ficheiros desse directório serão anexadas ao caminho por defeito.

Isto também funciona para manpath.

Aqui está um link para mais detalhes: ars technica: como acrescentar algo ao PATH no leopardo da neve?

Numa segunda nota: MacPorts coloca tudo no directório opt precisamente porque não é usado pelas coisas da Apple. Desta forma, não entra em conflito. O seu guia (excelentemente escrito, BTW) tem uma explicação do porquê de utilizar o opt e de como alterar esse padrão, se desejar. Guia MacPorts

4
4
4
2009-11-11 19:07:28 +0000

Para mostrar o seu caminho, echo $PATH.

echo $PATH

Para mostrar o seu caminho, edite ~/.bash_profile, não ~/.bash_login.

3
3
3
2012-02-07 19:36:18 +0000

Há também o caminho determinado por ssh**.

Comparar echo $PATH a ssh localhost 'echo $PATH'. Uma vez que ssh não lê /etc/profile, /usr/libexec/path_helper não corre e assim /etc/paths é ignorado. Agora tente ssh localhost 'source /etc/profile; echo $PATH'. Os percursos devem ser mais próximos. As restantes diferenças serão provavelmente devidas à modificação do caminho no seu .bash_profile (que também é ignorado por ssh) e .bashrc (que é lido por ssh).

Se quiser que o seu caminho ssh seja semelhante ao seu caminho terminal normal, poderá adicionar source /etc/profile ao seu .bashrc.

2
2
2
2013-06-01 09:50:21 +0000

Pode ser definido em qualquer um dos dois:

  • Variáveis de sistema - /etc/paths
  • Variáveis de utilizador - ver a explicação de @Steve Folly
1
1
1
2009-11-11 19:13:39 +0000

Na verdade é armazenado no seu ficheiro .profile em vez de .bash_login e é comum que MacPorts o utilize em vez do ficheiro .bash_login.

O directório /opt é normalmente criado pelo MacPorts e armazena os seus ficheiros nesta pasta.

1
1
1
2012-06-26 01:40:17 +0000

Relativamente a docs para /usr/libexec/path_helper utilidade, os componentes iniciais para $PATH foram retirados de /etc/paths e por defeito parecem ser

/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin

para OS-X Snow Leopard