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

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

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

Но это не работает. Он показывает все переменные с THEVAR, являющимся последним, но другой вызов env не показывает THEVAR anymore- 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 запускает программу в измененной среде, затем отклоняет все изменения.

8 ответов

Решение

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

VARNAME="my value"

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

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

Чтобы установить его навсегда для всех будущих сессий Bash, добавьте такую ​​строку в ваш .bashrc файл в вашем $HOME каталог.

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

sudo -H gedit /etc/environment

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

VARNAME="my value"

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

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

Чтобы установить переменную среды один раз, используйте 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

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

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

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

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

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

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

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

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

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

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

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

Если вам нужно вычислить выражения типа pwd, вы можете использовать это, например,

echo "export EIGEN_ROOT=\"$(pwd)/eigen\"" >> ~/.bashrc

Если вы используете Ubuntu или любую систему на основе Unix, экспортируйте переменные в ~/.bashrcфайл. Это скрытый файл, и вы можете добраться до него через терминал или отобразив скрытые файлы в файловой системе.

Затем отредактируйте файл и установите export THEVAR=/exampleтам, сохранить и это сделано.

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

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

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

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

  3. vi setenv.sh и установите следующую строку в setenv.sh export key = value

  4. sudo systemctl перезапустить 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);
}
Другие вопросы по тегам