Пути в /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? У меня нет опыта работы с другими оболочками, но я предполагаю, что они следуют другой структуре?