Как экспортировать переменную в 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...