Как установить переменные среды в оболочке рыбы
Может кто-нибудь сказать мне, пожалуйста, как правильно установить кучу переменных среды в оболочке рыбы?
В моем файле.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 внутри функции, и область действия по умолчанию будет локальной для этой функции.