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

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

$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 запускает программу в измененной среде, затем отменяет все изменения.

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

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#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

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

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

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

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

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

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

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

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

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

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

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

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

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

1.sudo su и cd в /var/lib/tomcat8/bin/ (или какой бы ни был ваш путь к папке tomcat)

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

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

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

  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);}

https://help.ubuntu.com/community/EnvironmentVariables

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

Когда он определен / экспортирован в .bashrc, он работает правильно.

Как насчет THEVAR=/example?

возможный дубликат Google Планета Земля и переменная среды $BROWSER