Как экспортировать переменную в bash
Мне нужно установить системную переменную среды из сценария bash,которая будет доступна вне текущей области. Таким образом, вы обычно экспортируете переменные среды следующим образом:
export MY_VAR=/opt/my_var
но мне нужно, чтобы переменная среды была доступна на системном уровне. Возможно ли это?
4 ответов
Это единственный способ, который я знаю, что вы хотите:
In foo.sh, у вас есть:
#!/bin/bash
echo MYVAR=abc123
и когда вы хотите получить значение переменной, вы должны сделать следующее:
$ eval "$(foo.sh)" # assuming foo.sh is in your $PATH
$ echo $MYVAR #==> abc123
в зависимости от того, что вы хотите сделать, и как вы хотите это сделать, предложение Дугласа лидера об использовании источника может быть использовано, но он будет источником всего файла, функций и всего. Используя eval, будет оцениваться только то, что получает Эхо.
не совсем - как только вы работаете в подпроцессе, вы не можете повлиять на своего родителя.
есть два варианта:
1) Источник сценария, а не запустить его (см. источник .):
source {script}
2) пусть скрипт выведет команды экспорта и оценит это:
eval `bash {script}` OR: eval "$(bash script.sh)"
изменить: Исправлен второй вариант, чтобы быть eval, а не источник. ОППС.
установите переменную в/etc / profile (при необходимости создайте файл). Что, по сути, сделать переменную доступной для каждого процесса bash.
задайте переменную в/etc / profile (при необходимости создайте файл). Что, по сути, сделать переменную доступной для каждого процесса bash.
...для каждого нового процесса bash...