Os caminhos /etc/pathse /etc/paths.d/*geralmente são adicionados PATHpor 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/pathscontém /usr/local/binno 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, tmuxeo 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 PATHprocesso 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.confreiniciando ou executando launchctl < /etc/launchd.conf; sudo launchctl < /etc/launchd.confe reiniciando processos.
No OS X, ~/.profilenão é lido quando você faz login graficamente. Se ambos ~/.bash_profilee ~/.profileexistirem, o bash também não lê ~/.profile.
~/.MacOSX/environment.plist parou de funcionar em 10.8.
/etc/profilescript é usado principalmente pelo bash? Não tenho experiências com outras conchas, mas presumo que elas sigam uma estrutura diferente?