Príležitostne, keď exportujem do bash, nedáva chybu, ale nenastavuje ani premennú prostredia. Mám na mysli toto:
Toto funguje:
bash-3.2$ export DYLD=$ABC_HOME
bash-3.2$ env | grep DYLD
DYLD=/Users/my_username/abc_home
Ale keď pokračujem, tieto:
bash-3.2$ export DYLD_LIBRARY=$ABC_HOME
bash-3.2$ env | grep DYLD
DYLD=/Users/my_username/abc_home
bash-3.2$ export DYLD_L=$ABC_HOME
bash-3.2$ env | grep DYLD
DYLD=/Users/my_username/abc_home
bash-3.2$ export DYLD_=$ABC_HOME
bash-3.2$ env | grep DYLD
DYLD=/Users/my_username/abc_home
Máte nejaký nápad, na čo by som sa to mohol pozrieť?
FWIW, ďalšie exporty s podčiarknutiami fungujú podľa očakávania, ale zdá sa, že to začne zlyhávať, keď pridám podčiarkovník.
odpovede:
6 pre odpoveď č. 1Zdá sa, že ide o ochranu OS X (pravdepodobne pridanú do programu El Capitan), ktorá zabraňuje exportu týchto (potenciálne nebezpečných) premenných prostredia do procesov, ktoré sa vyskytujú.
Táto vlákno na fórach vývojárov spoločnosti Apple o tom diskutujte.
Oficiálna dokumentácia tu to tiež stručne dokumentuje:
Splodiť procesy detí, ktoré sú obmedzené procesom Ochrana integrity systému, napríklad spustením procesu pomocníka v balíku s
NSTask
alebo zavolanieexec(2)
príkaz, obnoví Machove špeciálne porty tohto podradeného procesu. Akýkoľvek dynamický linker (dyld
) premenné prostredia, ako naprDYLD_LIBRARY_PATH
, sa pri spustení chránených procesov vyčistia.
-2 pre odpoveď č. 2
Skúste to :
oldifs=$IFS
IFS=$"n"
export DYLD_LIBRARY=$ABC_HOME
env | grep DYLD
IFS=$oldifs