Как добавить переменные среды?
Я использую 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), выполните следующие действия:
- Откройте терминал (нажав CtrlAltT)
sudo -H gedit /etc/environment
- Введите ваш пароль
- Отредактируйте только что открытый текстовый файл:
например, если вы хотите добавитьFOO=bar
тогда просто пишиFOO=bar
в новой строке - Сохрани это
- После сохранения выйдите из системы и войдите снова.
- Ваши необходимые изменения сделаны.
Чтобы изменения среды /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)
коснитесь setenv.sh(если он не существует), если файл уже присутствует, выполните vi setenv.sh
chmod 777 setenv.sh (сделать файл исполняемым)
vi setenv.sh и установите следующую строку в setenv.sh export key = value
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);
}