/ / bash export nefunguje iba pre jednu premennú - bash

bash export nefunguje len pre jednu premennú - bash

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ď č. 1

Zdá 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 zavolanie exec(2) príkaz, obnoví Machove špeciálne porty tohto podradeného procesu. Akýkoľvek dynamický linker (dyld) premenné prostredia, ako napr DYLD_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