Eu 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
Eu estou querendo saber onde isso está sendo definido, pois meu .bash_login
arquivo está vazio.
Estou particularmente preocupado que, depois de instalar o MacPorts, ele tenha instalado um monte de lixo /opt
. Não acho que esse diretório exista em uma instalação normal do Mac OS X.
Atualização: Obrigado ao jtimberman por corrigir minha echo $PATH
declaração
macos
command-line
osx-snow-leopard
bash
path
Andrew
fonte
fonte
easiest solution when you want to make a site-wide path change (e.g. to include /usr/libexec or whatever) is to edit
/etc/paths
. While the new
/etc/paths.d/
thing is functional, it's actually more hassle than maintaining a single file. As others have hinted but not spelled out, if the path changes you want would be useful only for one user, it's best to make that change in the bash and/or tcsh config files in that user's home directory instead of system-wide.
/etc/paths.d
útil para scripts de instalação. Se eu quiser que meu script de instalação inclua o programa instalado no caminho, posso inserir um arquivo/etc/paths.d
. Se eu quiser editar o caminho manualmente,/etc/paths
é uma opção melhor.Respostas:
Quando
bash
inicia, ele lê os seguintes arquivos sempre que você faz login. Para os fins do OS X, isso significa sempre que você abre uma novaTerminal
janela.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.Finalmente,
/etc/paths
e também/etc/paths.d
são lidos pelo shell./opt/local/bin
etc. são adicionados~/.tcshrc
pelo MacPorts. Também não deixe de procurar~/.cshrc
.fonte
~/.MacOSX/environment.plist
não funciona para algumas pessoas. Em Change Path for OS X,/etc/paths.d
é descrita uma alternativa usando a pasta . Eu não testei isso.~/.cshrc
. Ficou louco tentando descobrir por que~/.profile
não estava funcionando..bashrc
é lido, independentemente se você digitabash
ou não.Dê uma olhada no arquivo
/etc/paths
usado por/usr/libexec/path_helper
, usado por/etc/profile
.Para MacPorts, use
sudo /etc/paths/opt/local/bin
e reabra a janela do terminal.fonte
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 é:
Caso contrário, você pode simplesmente ir para /etc/paths.d e colocar o arquivo lá diretamente. De qualquer forma, qualquer parte do caminho nos arquivos desse diretório será anexada ao caminho padrão.
Isso também funciona para o manpath.
Aqui está um link para mais detalhes:
ars technica: como adicionar algo ao PATH no snow leopard?
Em uma segunda nota: o MacPorts coloca tudo no diretório opt precisamente porque não é usado pelo material da Apple. Dessa forma, não entrará em conflito. Seu guia (excelentemente escrito, BTW) tem uma explicação de por que usa opt e como alterar esse padrão, se você desejar.
Guia MacPorts
fonte
I have to concur that there's nothing weird or bad about MacPorts using
/opt
(likewise Fink uses /sw); trying to replace stock Mac BSD parts with bleeding-edge builds from external projects like these is a recipe for an unusable system that requires an OS reinstallation.
Para mostrar seu caminho, faça eco de $ PATH.
Para definir seu caminho, edite
~/.bash_profile
, não~/.bash_login
.fonte
Há também o caminho determinado pelo ssh .
Compare
echo $PATH
comssh localhost 'echo $PATH'
. Como o ssh não lê / etc / profile, o / usr / libexec / path_helper não roda e, portanto, o / etc / caminhos é ignorado. Agora tentessh localhost 'source /etc/profile; echo $PATH'
. Os caminhos devem estar mais próximos. As diferenças restantes provavelmente ocorrerão devido à modificação do caminho no seu .bash_profile (que também é ignorado pelo ssh) e .bashrc (que é lido pelo ssh).Se você quiser que o caminho do ssh seja semelhante ao caminho normal do terminal, adicione-o
source /etc/profile
ao .bashrc.fonte
Pode ser definido em:
/etc/paths
fonte
Na verdade, ele é armazenado no seu
.profile
arquivo em vez de.bash_login
e é comum que o MacPorts o use no lugar do.bash_login
arquivo.Além disso, o
/opt
diretório geralmente é criado pelo MacPorts e armazena seus arquivos nessa pasta.fonte
Em relação aos documentos para
/usr/libexec/path_helper
utilidade, os componentes iniciais para $ PATH foram retirados/etc/paths
e, por padrão, parecempara OS-X Snow Leopard
fonte