Как я добавляю переменные среды?

Я запускаю Ubuntu 11.04. Я использую терминал для запуска сессии удара, и я хочу добавить переменную среды:

$r@hajt:~$ env THEVAR=/example

Но это не работает. Это показывает все переменные с THEVAR быть последним, но другим вызовом к env не показывает THEVAR больше - env | grep THEVAR возвраты ничто.

Точно так же сценарии с экспортом (export THEVAR=/example) или другие переменные присвоения (THEVAR=/example) не добавляйте переменную среды.

Я знаю, что делаю что-то не так, я знаю, что это должно быть что-то простое, но я просто не могу найти что.

ОБНОВЛЕНИЕ: реальное значение моего вопроса было этим: https://stackoverflow.com/questions/496702/can-a-shell-script-set-environment-variables-of-the-calling-shell

(Так или иначе я выберу наиболее проголосовавший ответ и оставлю отредактированный заголовок - который не был тем, что я спрашивал),

env запускает программу в измененной среде, затем отклоняет все изменения.

549
задан 23 May 2017 в 15:39

7 ответов

Установка переменной только для текущей оболочки:

VARNAME="my value"

Установка для текущей оболочки и все процессы , запущенные из текущей оболочки:

export VARNAME="my value"      # shorter, less portable version

Установка навсегда для всех последующих сеансов баширования добавляют такую строку в ваш . bashrc в Вашем каталоге $HOME.

Чтобы установить его навсегда, и в масштабе всей системы (все пользователи, все процессы) добавьте переменную set в /etc/environment:

sudo -H gedit /etc/environment

Этот файл принимает только назначения переменных типа:

VARNAME="my value"

Не используйте здесь ключевое слово export.

Вам нужно выйти из текущего пользователя и снова войти в систему, чтобы произошла смена переменных окружения.

770
ответ дан 7 December 2019 в 12:27

Чтобы установить переменную окружения один раз, используйте команду export в строке запроса, а не в сценарии оболочки:

$ export THEVAR=/example

Переменная будет установлена на весь оставшийся сеанс оболочки или пока не будет отменена.

Для установки переменной окружения каждый раз используйте команду export в файле .bashrc (или в соответствующем файле инициализации оболочки).

Для установки переменной окружения из скрипта используйте команду export в скрипте, а затем source в скрипте. Если вы выполните скрипт, он не будет работать.

Для объяснения разницы между источником и выполнением смотрите этот ответ: https://superuser.com/questions/176783/what-is-the-difference-between-executing-a-bash-script-and-sourcing-a-bash-script/176788#176788

38
ответ дан 7 December 2019 в 12:27

Чтобы навсегда добавить новую переменную среды в Ubuntu (проверено только в 14.04), выполните следующие действия:

  1. Откройте терминал (нажав Ctrl Alt ] T )
  2. sudo -H gedit / etc / environment
  3. Введите пароль
  4. Отредактируйте только что открытый текстовый файл:
    например если вы хотите добавить FOO = bar , просто напишите FOO = bar в новой строке
  5. Сохраните его
  6. После сохранения выйдите из системы и войдите снова.
  7. Внесены необходимые изменения.
22
ответ дан 7 December 2019 в 12:27

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

if [[ ! -d "$MyVar" ]]; then 
    export MyVar="abc"
    echo 'export MyVar="abc"' >> ~/.bashrc
fi

Если вам нужно для оценки таких выражений, как pwd, вы можете использовать это, например,

echo "export EIGEN_ROOT=\"$(pwd)/eigen\"" >> ~/.bashrc
6
ответ дан 7 December 2019 в 12:27

Чтобы изменения среды / var сохранялись после завершения сценария, вы должны использовать source ./script.sh или сокращенное обозначение источника, ". ", например . ./script.sh

Source будет выполнять команды в сценарии, как если бы вы ввели их ... поэтому он меняет некоторые аспекты сценария, например, выход ... поэтому, если ваш сценарий что-то проверяет и решает для выхода, если false, например, через вызов exit 0 , он завершит ваш текущий сеанс терминала / оболочки.

12
ответ дан 7 December 2019 в 12:27

Я знаю, что уже довольно поздно, но если вы хотите добавить переменную среды для всех пользователей (например, использование JAVA), вы можете сделать следующее:

1) Откройте / etc / bash.bashrc с использованием nano (вы можете использовать любой редактор, я не предпочитаю VIM, так как это наихудший, когда дело доходит до удобства пользователя - ничего личного).

2) Добавьте в файл:

экспорт VAR = путь экспорт PATH = $ PATH: / bin 3) (Лучше, если вы можете отскочить от окна) - или просто откройте новый сеанс SSH и подтвердите его с помощью команды `env '.

НО ЕСЛИ вы хотите, чтобы у каждого пользователя были отдельные настройки для этого, вы должны внести изменения (сценарий) в файл .bashrc в папке ~ / .bashrc (или / home / $ USER / , если вы новичок в системах Linux)

7
ответ дан 7 December 2019 в 12:27

Если вы развертываете приложение JAVA с помощью TOMCAT, вы можете установить переменные среды следующим образом:

1. su и cd в / var / lib / tomcat8 / bin / (или в зависимости от того, что путь к вашему каталогу tomcat bin)

  1. touch setenv.sh (если он не существует), если файл уже присутствует, выполните 'vi setenv.sh'

  2. chmod 777 setenv.sh (сделать файл исполняемым)

  3. vi setenv .sh и установите следующую строку в setenv.sh экспорт ключ = значение

  4. sudo systemctl restart tomcat.service

В вашем java-файле вы можете использовать следующий код, чтобы проверить, установлена ​​ли переменная

private static void printEnv() {
    System.out.println("******************************Environment Vars*****************************");
    Map<String, String> enviorntmentVars = System.getenv();
    enviorntmentVars.entrySet().forEach(System.out::println);

    System.out.println("******************************system Vars*****************************");
    Properties enviorntmentProperties = System.getProperties();
    enviorntmentVars.entrySet().forEach(System.out::println);
}
0
ответ дан 4 January 2021 в 12:06

Другие вопросы по тегам:

Похожие вопросы: