Как постоянно экспортировать переменную в Linux?

Я запускаю RHEL6, и я экспортировал переменную среды следующим образом:

export DISPLAY=:0

Эта переменная теряется при закрытии CMD. Как я могу постоянно добавлять это, чтобы это значение всегда существовало с конкретным пользователем?

Ответ 1

Вы можете добавить его в файл конфигурации оболочки, например. $HOME/.bashrc или более глобально в /etc/environment.

Ответ 2

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

  • ~/.bashrc

     Когда вы открываете любое окно терминала, этот файл будет запущен. Поэтому, если вы хотите иметь постоянную переменную окружения во всех своих окон терминала, вам необходимо добавить следующую строку в конце этого файла:
    export DISPLAY = 0
  • ~/.profile

    То же, что и
bashrc, вы должны поместить указанную командную строку в конец этого файла, чтобы иметь переменную окружения в каждом входе в вашу ОС.

/etc/environment

Если вам нужна переменная среды в каждом окне или приложении (а не только в окне терминала), вы должны отредактировать этот файл. Добавьте следующую команду в конец этого файла:
<Я > DISPLAY = 0я >
Обратите внимание, что в этом файле вам не нужно писать команду export

Обычно вы должны перезагрузить компьютер, чтобы применить эти изменения. Но вы можете применить изменения в bashrc и профиль следующими командами:

$ source ~/.bashrc
$ source ~/.profile

Но для /etc/environemnt у вас нет выбора, кроме перезапуска (насколько мне известно)

Простое решение

Я написал простой script для этих процедур, чтобы сделать все эти работы. Вам просто нужно задать имя и значение переменной среды.
#!/bin/bash
echo "Enter variable name: "
read variable_name
echo "Enter variable value: "
read variable_value
echo "adding " $variable_name " to einvironment variables: " $variable_value
echo "export "$variable_name"="$variable_value>>~/.bashrc
echo $variable_name"="$variable_value>>~/.profile
echo $variable_name"="$variable_value>>/etc/environment
source ~/.bashrc
source ~/.profile
echo "do you wanna restart your computer to apply changes in /etc/environment file? yes(y)no(n)"
read restart
case $restart in
    y) sudo shutdown -r 0;;
    n) echo "don't forget to restart your computer manually";;
esac
exit

Сохраните эти строки в shfile, затем сделайте его исполняемым и просто запустите!

Ответ 3

добавьте строку в .bashrc или .profile. Переменные, установленные в $HOME/.profile, активны для текущего пользователя, те, что в /etc/profile являются глобальными. .bashrc вытягивается при каждом начале сеанса bash.

Ответ 4

В системах Ubuntu используйте следующие места:

  • Постоянная переменная системы в формате JAVA_PATH=/usr/local/java хранится в

    /etc/environment
    
  • Общесистемные постоянные переменные, которые ссылаются на переменные, такие как export PATH="$JAVA_PATH:$PATH" сохранить в

    /etc/.bashrc
    
  • Пользовательские постоянные переменные в формате PATH DEFAULT=/usr/bin:usr/local/bin хранятся в

    ~/.pam_environment
    

Подробнее о # 2, проверьте это Запросить ответ Ubuntu. ПРИМЕЧАНИЕ: # 3 - рекомендация Ubuntu, но может иметь проблемы с безопасностью в реальном мире.

Ответ 5

Конкретный пример: У меня установлены Java 7 и Java 6, мне нужно запустить некоторые сборки с 6, другие с 7. Поэтому мне нужно динамически изменить JAVA_HOME, чтобы maven собирал то, что я хочу для каждой сборки. Я сделал следующее:

  • создан j6.sh script, который просто экспортирует путь JAVA_HOME=... к j6 install...
  • то, как было предложено одним из комментариев выше, всякий раз, когда мне нужно J6 для сборки, я запускаю source j6.sh в этом соответствующем командном терминале. По умолчанию мой JAVA_HOME установлен в J7.

Надеюсь, что это поможет.