Onde o $ PATH é definido no OS X 10.6 Snow Leopard?

132

Eu digito echo $PATH na linha de comando e obtenho

/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

Eu estou querendo saber onde isso está sendo definido, pois meu arquivo .bash_login está vazio.

Estou particularmente preocupado que, depois de instalar o MacPorts, ele tenha instalado um monte de lixo em /opt . Eu não acho que o diretório sequer exista em uma instalação normal do Mac OS X.

Atualização: graças a jtimberman para correção de minha declaração echo $PATH

    
por Andrew 11.11.2009 / 19:48

8 respostas

152

Quando bash inicia, ele lê os arquivos a seguir toda vez que você faz login. Para os propósitos do OS X, isso significa que toda vez que você abrir uma nova janela Terminal .

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

Quando você inicia um novo shell digitando bash na linha de comando, ele lê .bashrc

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

Por fim, /etc/paths e /etc/paths.d também são lidos pelo shell.

/opt/local/bin etc. são adicionados em ~/.tcshrc por MacPorts. Também não deixe de procurar em ~/.cshrc .

    
por 11.11.2009 / 21:57
47

Dê uma olhada no arquivo /etc/paths , que é usado por /usr/libexec/path_helper , que é usado por /etc/profile .

Para MacPorts, use sudo /etc/paths/opt/local/bin e reabra a janela do terminal.

    
por 30.12.2009 / 21:31
25

Sério, o Leopard nos deu uma nova maneira de adicionar caminho. Basta criar um arquivo contendo a parte do caminho que você deseja adicionar e colocá-lo em /etc/paths.d

Um exemplo rápido de fazer isso em uma etapa é:

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

Caso contrário, você pode simplesmente ir para /etc/paths.d e colocar o arquivo lá diretamente. De qualquer forma, todas as partes do caminho nos arquivos desse diretório serão anexadas ao caminho padrão.

Isso também funciona para o caminho de trabalho.

Aqui está um link para mais detalhes:

ars technica: como faço para adicionar algo ao PATH no snow leopard? / a>

Em uma segunda nota: o MacPorts coloca tudo no diretório opt justamente porque não é usado pelas coisas da Apple. Dessa forma, não vai entrar em conflito. Seu guia (escrito de forma excelente, BTW) tem uma explicação do porquê ele usa opt e como alterar esse padrão se você quiser.

Guia MacPorts

    
por 25.03.2011 / 19:07
4

Para mostrar seu caminho, eco $ PATH.

echo $PATH

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

    
por 11.11.2009 / 20:07
3

Há também o caminho determinado por ssh .

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

Se você quiser que seu caminho ssh seja semelhante ao seu caminho de terminal normal, você pode adicionar source /etc/profile ao seu .bashrc.

    
por 07.02.2012 / 20:36
2

Poderia ser definido em:

  • Variáveis do sistema - /etc/paths
  • Variáveis do usuário - veja a explicação do @Steve Folly
por 01.06.2013 / 11:50
1

Na verdade, ele é armazenado no arquivo .profile em vez de .bash_login e é comum que o MacPorts use isso em vez do arquivo .bash_login .

Além disso, o diretório /opt é geralmente criado pelo MacPorts e armazena seus arquivos nessa pasta.

    
por 11.11.2009 / 20:13
1

Em relação a docs para /usr/libexec/path_helper utility, os componentes iniciais de $ PATH foram tirados de /etc/paths e, por padrão, parecem como

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

para o OS-X Snow Leopard

    
por 26.06.2012 / 03:40