Как установить переменные среды в оболочке рыбы

Может кто-нибудь сказать мне, пожалуйста, как правильно установить кучу переменных среды в оболочке рыбы?

В моем файле.config/fish/config.fish у меня есть функция для настройки переменных среды, например

function setTESTENV
      set -x BROKER_IP '10.14.16.216'
      set -x USERNAME 'foo'
      set -x USERPASS 'bar'
end 

когда я печатаю из командной строки setTESTENV и сделать env в командной строке я не вижу эту информацию.

4 ответа

Решение

Переменные, которые вы объявляете, хранятся в локальной области внутри вашей функции.

Использование:

set -g -x

Вот "g"для глобального.

Используйте универсальные переменные

Если переменная должна быть общей для всех текущих пользовательских экземпляров fish на текущем компьютере и сохранена при перезапуске оболочки, вы должны использовать -U или же --universal:

set -Ux FOO bar

С помощью set с -g или же --global не устанавливает переменную постоянно между экземплярами оболочки

Другой вариант - запустить:

export (cat env_file.txt |xargs -L 1)

где env_file.txt содержит строки формата VAR=VALUE

это дает преимущество хранения переменных в формате, поддерживаемом другими оболочками и инструментами

Переменные среды в рыбе

Я хотел бы добавить, что, хотя ответ @JosEduSol не является неправильным и помогает решить проблему OP, -g только устанавливает область видимости как глобальную, в то время как -x вызывает экспорт указанной переменной среды в дочерние процессы.

Причина, по которой вышеприведенное не работает, заключается в том, что @cfpete устанавливает переменные env внутри функции, и область действия по умолчанию будет локальной для этой функции.

Другие вопросы по тегам