Подтвердить что ты не робот

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

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

В моем файле .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 в командной строке, я не вижу эту информацию.

4b9b3361

Ответ 1

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

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

set -g -x

Здесь "g" для глобальных.

Ответ 2

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

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

set -Ux FOO bar

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

Ответ 3

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

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

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

Ответ 4

запускается еще одна опция:

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

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

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