Понякога, когато експортирам в bash, не дава грешка, но не задава и променливата на средата. Ето какво имам предвид:
Това работи:
bash-3.2$ export DYLD=$ABC_HOME
bash-3.2$ env | grep DYLD
DYLD=/Users/my_username/abc_home
Но когато продължа, тези не:
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
Имаш ли представа какво мога да погледна, за да поправя това?
FWIW, друг износ с долни черти работи както се очаква, но това изглежда започва да се проваля, след като добавя долната черта в.
Отговори:
6 за отговор № 1Изглежда, че това е OS X защита (добавена евентуално в El Capitan), която предотвратява експортирането на тези (потенциално опасни) променливи на обкръжението към процеси, които се създават.
Тази тема на Форумите на разработчиците на Apple обсъдете това.
Официалната документация тук също документира това кратко:
Размножаващи се деца процеси на процеси, ограничени от Защита на системната цялост, например чрез стартиране на помощен процес в пакет с
NSTask
или обаждане наexec(2)
команда, нулира специалните портове на Мах на този процес. Всеки динамичен линкер (dyld
) променливи на околната среда, катоDYLD_LIBRARY_PATH
, се изчистват при стартиране на защитени процеси.
-2 за отговор № 2
Опитайте тази :
oldifs=$IFS
IFS=$"n"
export DYLD_LIBRARY=$ABC_HOME
env | grep DYLD
IFS=$oldifs