Хм ... Начиная с Mac OS X 10.10.5 и, возможно, ранее, он man -s5 launchd.conf
говорит нам: " launchd.conf is no longer respected by the system.
" У меня сейчас слишком много вещей, чтобы поместить фиктивную переменную в файл и перезапустить, чтобы посмотреть, действительно ли она работает или нет после все, но в документации сказано, что это не должно работать.
Я уверен, что это не так. Сделай man launchctl
и увидишь: " The /etc/launchd.conf file is no longer consulted for subcommands to run during early boot time; this functionality was removed for security considerations.
"
Что вы можете сделать, это поместить все переменные среды, которые вы хотите использовать в глобальном масштабе, в некоторый файл, возможно, вызванный environment
в соответствии с Linux, или (в случае, если Apple решит что-то сделать с этим позже - вы никогда не узнаете) environment.conf
, как я, затем источник этого через /etc/profile
:
if [ -f /etc/environment.conf ]; then
source /etc/environment.conf
fi
или, если вы предпочитаете компактный формат:
if [ -f /etc/environment.conf ]; then . /etc/environment.conf; fi
Если вы используете какую-то другую оболочку, отличную от bash, и она использует тот же синтаксис установки переменных, что и bash (я думаю, что это делает zsh), вам также нужно будет получить этот файл из общесистемного rc-файла этой оболочки (например /etc/zshrc
). Если вы используете оболочку с другим синтаксисом, например, tcsh, вам нужно либо сохранить аналогичный файл для этой оболочки и получить его из общесистемного rc-файла оболочки (например, /etc/csh.cshrc
для tcsh), либо лучше создать сценарий. это автоматически генерирует его, так что вам нужно всего лишь отредактировать один файл, чтобы добавить / изменить переменные. Это не место для такого урока; Несколько секунд в Google выяснилось, как преобразовать экспорт [t] csh-переменных в синтаксис bash, по адресу https://stackoverflow.com/questions/2710790/how-to-source-a-csh-script-in-bash-to -set-The-окружающая средатак что, вероятно, есть что-то, что может пойти в другом направлении.
По моему опыту, Mac OS X все дальше и дальше уходит от предсказуемого поведения файла rc. По крайней мере, с 10.8, он больше не загружается /etc/rc.common
, /etc/rc.conf
или /etc/rc.<anything>
(с, по крайней мере, 10.9) он не загружается /etc/bash.bashrc
для интерактивных нелогиновых оболочек (что он, безусловно, должен делать, точно так же, как он загружает ~/.bashrc
их, по-прежнему, начиная с 10.10) , С другой стороны, у меня есть Fink, MacPorts и Homebrew, которые все устанавливают, так что, возможно, один из них мешает поведению по умолчанию в dotfile. YMMV.
/etc/environment
) не читается, потому что он не является каким-либо межсистемным стандартом - это просто часть возможностей Linux PAM. Mac OS X не является Linux и не использует PAM и другие операционные системы, насколько мне известно. Видимо, вам это сошло с рук только потому, что вы работали в Linux. И да, это все еще читается - Linux ;-)