Tenho um entendimento básico de como o $ PATH pode ser definido, mas existe uma documentação que descreve completamente onde o Mac OS obtém todos os caminhos anexados ao $ PATH? Estou ciente de coisas como /etc/profile
, /etc/paths
e /etc/profile.d
, mas existem outros scripts que, eventualmente, afetar o valor de US $ PATH? Também não estou muito familiarizado com o não-login e as conchas de login ( .bashrc
, .bash_profile
), mas estou ciente das diferenças básicas.
/etc/profile
script é usado principalmente pelo bash? Não tenho experiências com outras conchas, mas presumo que elas sigam uma estrutura diferente?/etc/profile
é usado pela maioria dos reservatórios (todos? Não 100% certo). É por isso que é uma boa escolha colocar as coisas que você deseja em qualquer lugar, como PATHs. O Bash lê.bash_
arquivos enquanto o Zsh, por exemplo, lê.zshrc
além de outros. Depende da casca.path_helper
é chamado para shells interativos sem login (nem shells não interativos). É chamado de shells de login interativo, na verdade./etc/profile
Os caminhos
/etc/paths
e/etc/paths.d/*
geralmente são adicionadosPATH
por path_helper .path_helper
é executado a partir de/etc/profile
, portanto, é executado quando o bash é chamado como um shell de logon interativo, mas não quando o bash é chamado como um shell que não é de login ou um shell não interativo./etc/paths
contém/usr/local/bin
no final por padrão e/etc/paths.d/
está vazio por padrão.O Terminal e o iTerm 2 abrem novos shells como shells de login por padrão, e o shell aberto quando você faz o ssh no seu computador também é um shell de login. Muitos emuladores de terminal em outras plataformas,
tmux
eo modo de shell no Emacs abrem novos shells como shells sem login.Eu adicionei esta linha a
/etc/launchd.conf
:setenv PATH ~/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/libexec:/usr/texbin
Ele altera o valor do
PATH
processo raiz launchd. O valor é herdado por todos os outros processos, incluindo processos de inicialização por usuário. Você pode aplicar alterações/etc/launchd.conf
reiniciando ou executandolaunchctl < /etc/launchd.conf; sudo launchctl < /etc/launchd.conf
e reiniciando processos.No OS X,
~/.profile
não é lido quando você faz login graficamente. Se ambos~/.bash_profile
e~/.profile
existirem, o bash também não lê~/.profile
.~/.MacOSX/environment.plist
parou de funcionar em 10.8.fonte