Проблема с переменной среды в Mac OS sierra - PullRequest
0 голосов
/ 04 октября 2018

Я вижу странную проблему с хранением env в Mac OS.

Я установил пользовательский env в ~/.bash_profile export MYENV = user Затем запустил . ~/.bash_profile и затем напечатал env, используяprintenv тогда я могу видеть пользователя MYENV = в списке.

Если я закрою терминал, снова открою и выполню printenv, тогда я не смогу увидеть MYENV в списке, но я все равно смогу увидеть экспортMYENV = пользователь в ~/.bash_profile.Это кажется странным для меня.

Я использую Mac OS High Sierra 10.13.6 .Может ли какое-нибудь тело сказать мне, какую ошибку я делаю?

Ответы [ 2 ]

0 голосов
/ 22 октября 2018

Обратите внимание, что ~ / .bash_profile запускается только для оболочек входа в систему.Со страницы руководства:

When bash is invoked as an interactive login shell, or as a non-interactive shell with the --login option, it first reads and executes commands from the file /etc/profile, if that file exists. After reading that file, it looks for ~/.bash_profile, ~/.bash_login, and ~/.profile, in that order, and reads and exe- cutes commands from the first one that exists and is readable. The --noprofile option may be used when the shell is started to inhibit this behavior.

Так что, если ваш терминал не запускает оболочку с -l, --login или с $0, имеющим дефис, он победит 'Это не оболочка для входа в систему, поэтому она не будет читать ~ / .bash_profile .Вам может понадобиться перенастроить, как ваш терминал запускает оболочку, если вы хотите, чтобы оболочка считывала этот скрипт конфигурации.

С другой стороны, ~ / .bashrc всегда читается интерактивной оболочкой.Так что если вы поместите экспорт в этот скрипт, он должен делать то, что вы ожидаете.Это, конечно, для меня.Вы ответили Амиле, что это не сработало для вас.Поэтому я бы предложил простой эксперимент.Откройте два оконных окна.В одном редактируйте ~ / .bashrc и добавьте эти две строки:

echo running .bashrc export WTF=abc

В другом окне просто запустите bash.Оно должно повторить это сообщение и echo $WTF должно вывести abc.Теперь откройте новое окно терминала.Если вы не видите это сообщение, а env var отсутствует, значит что-то запрещает чтение этого скрипта конфигурации.Возможно, оболочка запускается с флагом --norc.

0 голосов
/ 04 октября 2018

~/.bash_profile выполняется до того, как начальная командная строка возвращается пользователю, что означает после нового входа в систему.Попробуйте вместо этого добавить переменную окружения в ~/.bashrc.

...