як встановити змінні середовища в риб'ячому панцирі


90

Хтось може підказати мені, який правильний спосіб встановити купу змінних середовища в оболонці риби?

У моєму файлі .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в командному рядку, я не бачу цієї інформації.

Відповіді:


70

Змінні, які ви оголошуєте, зберігаються у локальній області всередині вашої функції.

Використання:

set -g -x

Тут " g" - для глобального.


151

Використовуйте універсальні змінні

Якщо змінну потрібно розподілити між усіма поточними екземплярами користувача fish на поточному комп'ютері та зберегти при перезапуску оболонки, ви повинні використовувати -Uабо --universal:

set -Ux FOO bar

Використання setз -gабо --globalне встановлює змінні оболонки постійно між екземплярами


Примітка :

Не додавайте до універсальних змінних у config.fishфайлі, оскільки ці змінні будуть довшими з кожним новим екземпляром оболонки. Натомість просто запустіть set -Uxодин раз у командному рядку. І він буде збережений у файлі .config/fish/fishd.MACHINE_ID, де MACHINE_IDзазвичай є ваша MAC-адреса.


Мої змінні не були збережені в fishd.MACHINE_ID, а натомість були збережені в~/.config/fish/fish_variables
Seanny123

моя змінна була збережена в ~/.config/fish/fish_variablesubuntu 20.04
Ігор Маркелов,

11

інший варіант - запустити:

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

де env_file.txt містить рядки формату VAR=VALUE

це має перевагу зберігати змінні у форматі, підтримуваному іншими оболонками та інструментами


Якщо ви хочете уникати коментарів, ви можете: export (grep "^[^#]" .env |xargs -L 1)
Гільєрмо

10

Змінні середовища в рибі

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

Причиною того, що вище не вдається, є те, що @cfpete встановлює env vars всередині функції, а область за замовчуванням буде локальною для цієї функції.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.