Hmm ... Począwszy od Mac OS X 10.10.5 i prawdopodobnie wcześniej, man -s5 launchd.conf
mówi nam: „ launchd.conf is no longer respected by the system.
Mam teraz zbyt wiele rzeczy, aby umieścić zmienną fikcyjną w pliku i zrestartować, aby zobaczyć, czy to naprawdę działa, czy nie po wszystko, ale dokumentacja mówi, że to nie powinno działać.
Jestem pewien, że tak nie będzie. Zrób, man launchctl
a zobaczysz: „ The /etc/launchd.conf file is no longer consulted for subcommands to run during early boot time; this functionality was removed for security considerations.
”
To, co możesz zrobić, to umieścić wszystkie zmienne środowiskowe, które mają być globalne, w jakimś pliku, być może wywoływanym environment
zgodnie z Linuksem lub (w przypadku, gdy Apple zdecyduje się coś z tym zrobić później - nigdy nie wiesz) environment.conf
, tak jak ja, następnie zdobądź to poprzez /etc/profile
:
if [ -f /etc/environment.conf ]; then
source /etc/environment.conf
fi
lub, jeśli wolisz format kompaktowy:
if [ -f /etc/environment.conf ]; then . /etc/environment.conf; fi
Jeśli używasz innej powłoki niż bash i używa tej samej składni ustawiania zmiennych co bash (podobnie jak Zsh, myślę), musisz również pobrać ten plik z ogólnosystemowego pliku rc tej powłoki (np /etc/zshrc
.). Jeśli używasz powłoki, która używa innej składni, np. Tcsh, musisz albo zachować podobny plik dla tej powłoki i pobrać go z ogólnosystemowego pliku rc powłoki (np. /etc/csh.cshrc
Dla tcsh), albo lepiej utworzyć skrypt który automatycznie go generuje, więc musisz edytować tylko jeden plik, aby dodać / zmienić zmienne. To nie jest miejsce na taki samouczek; kilka sekund w Google dowiedział się, jak przekonwertować [t] eksport zmiennych csh do składni bash, na https://stackoverflow.com/questions/2710790/how-to-source-a-csh-script-in-bash-to -Zestaw środowisko, więc prawdopodobnie jest coś, co można pójść w innym kierunku.
Z mojego doświadczenia wynika, że Mac OS X odchodzi coraz bardziej od przewidywalnego zachowania pliku rc. Począwszy od co najmniej 10.8, nie wydaje się już ładować /etc/rc.common
, /etc/rc.conf
ani /etc/rc.<anything>
też (ponieważ co najmniej 10.9) nie będzie ładował /etc/bash.bashrc
interaktywnych powłok nieloginowych (co z pewnością powinno działać, tak jak ładuje się ~/.bashrc
dla nich, jednak od 10.10) . Z drugiej strony Fink, MacPorts i Homebrew instalują wszystkie rzeczy, więc może jeden z nich zakłóca domyślne zachowanie pliku kropkowego. YMMV.
/etc/environment
) nie jest odczytywany, ponieważ nie jest standardem wielosystemowym - jest tylko częścią systemu Linux PAM. Mac OS X nie jest Linuksem i nie używa PAM ani innych systemów operacyjnych, o ile mi wiadomo. Udało ci się to tylko dlatego, że najwyraźniej byłeś na Linuksie. I tak, nadal jest czytany - przez Linuksa ;-)