Пути в /etc/pathsи , /etc/paths.d/*как правило , добавляют к PATHпо path_helper . path_helperзапускается из /etc/profile, поэтому он запускается, когда bash вызывается как интерактивная оболочка входа в систему, но не когда bash вызывается как оболочка без входа в систему или неинтерактивная оболочка.
/etc/pathsсодержит /usr/local/binв конце по умолчанию, и /etc/paths.d/по умолчанию пусто.
Terminal и iTerm 2 по умолчанию открывают новые оболочки в качестве оболочек входа в систему, и оболочка, открываемая при подключении к компьютеру по ssh, также является оболочкой входа в систему. Многие эмуляторы терминалов на других платформах tmuxи режим оболочки в Emacs открывают новые оболочки как оболочки без входа в систему.
Я добавил эту строку в /etc/launchd.conf:
setenv PATH ~/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/libexec:/usr/texbin
Это меняет значение PATHкорневого процесса launchd. Значение наследуется всеми другими процессами, включая процессы запуска на уровне пользователя. Вы можете применить изменения /etc/launchd.conf, перезапустив или запустив launchctl < /etc/launchd.conf; sudo launchctl < /etc/launchd.confи перезапустив процессы.
На OS X ~/.profileне читается, когда вы входите в систему графически. Если и то ~/.bash_profileи другое ~/.profileсуществует, bash тоже не читает ~/.profile.
~/.MacOSX/environment.plist перестал работать в 10.8.
/etc/profileскрипт в основном используется bash? У меня нет опыта работы с другими оболочками, но я предполагаю, что они следуют другой структуре?