Я запускаю 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
запускает программу в измененной среде, затем отклоняет все изменения.
Установка переменной только для текущей оболочки:
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
.
Вам нужно выйти из текущего пользователя и снова войти в систему, чтобы произошла смена переменных окружения.
Чтобы установить переменную окружения один раз, используйте команду 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), выполните следующие действия:
sudo -H gedit / etc / environment
FOO = bar
, просто напишите FOO = bar
в новой строке Если вы делаете что-то с помощью скрипта, один из простых способов установить переменную среды на постоянной основе помещается ниже в вашем скрипте,
if [[ ! -d "$MyVar" ]]; then
export MyVar="abc"
echo 'export MyVar="abc"' >> ~/.bashrc
fi
Если вам нужно для оценки таких выражений, как pwd, вы можете использовать это, например,
echo "export EIGEN_ROOT=\"$(pwd)/eigen\"" >> ~/.bashrc
Чтобы изменения среды / var сохранялись после завершения сценария, вы должны использовать source ./script.sh
или сокращенное обозначение источника, ". ", например . ./script.sh
Source будет выполнять команды в сценарии, как если бы вы ввели их ... поэтому он меняет некоторые аспекты сценария, например, выход ... поэтому, если ваш сценарий что-то проверяет и решает для выхода, если false, например, через вызов exit 0
, он завершит ваш текущий сеанс терминала / оболочки.
Я знаю, что уже довольно поздно, но если вы хотите добавить переменную среды для всех пользователей (например, использование JAVA), вы можете сделать следующее:
1) Откройте / etc / bash.bashrc
с использованием nano (вы можете использовать любой редактор, я не предпочитаю VIM, так как это наихудший, когда дело доходит до удобства пользователя - ничего личного).
2) Добавьте в файл:
экспорт VAR = путь
экспорт PATH = $ PATH: / bin
3) (Лучше, если вы можете отскочить от окна) - или просто откройте новый сеанс SSH и подтвердите его с помощью команды `env '.
НО ЕСЛИ вы хотите, чтобы у каждого пользователя были отдельные настройки для этого, вы должны внести изменения (сценарий) в файл .bashrc
в папке ~ / .bashrc
(или / home / $ USER /
, если вы новичок в системах Linux)
Если вы развертываете приложение JAVA с помощью TOMCAT, вы можете установить переменные среды следующим образом:
1. su и cd в / var / lib / tomcat8 / bin / (или в зависимости от того, что путь к вашему каталогу tomcat bin)
touch setenv.sh (если он не существует), если файл уже присутствует, выполните 'vi setenv.sh'
chmod 777 setenv.sh (сделать файл исполняемым)
vi setenv .sh и установите следующую строку в setenv.sh экспорт ключ = значение
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);
}