Как восстановить изменения в переменной оболочки?

В целях эксперимента …

Предположим, я сделал это

bash="unset DISPLAY; export DISPLAY" 

поэтому я могу сделать DISPLAY неопределенным. Как восстановить исходное значение? Или, по крайней мере, знать, что это было?

3 Solutions collect form web for “Как восстановить изменения в переменной оболочки?”

В общем, вы пишете его перед рукой.

Если вы спрашиваете об этом в теории, тогда вы просто храните прежнее значение где-то еще, прежде чем модифицировать его, а затем верните его, когда захотите.

Если вы спрашиваете об этом, потому что теперь вы ввернуты и надеетесь, что есть что-то, что вас выручит, тогда у меня плохие новости для вас …

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

Каков контекст этого. Вы хотите, чтобы это было доступно автоматически? Я не знаю об этом как об объекте любой оболочки.

Одним из очевидных решений было бы явное сохранение переменной до ее изменения, а затем ее восстановление. Использование переменной окружения VENDOR в качестве примера:

 $ echo $VENDOR intel 

Сохраните исходное значение:

 $ pre_VENDOR=$VENDOR $ echo $pre_VENDOR intel 

Назначьте новое значение:

 $ VENDOR='Zippy' $ echo $VENDOR Zippy 

Восстановить исходное значение:

 $ VENDOR=$pre_VENDOR $ echo $VENDOR intel 

Вы не можете, нет отмены. Сохраните значение в другой переменной (или в файле или где угодно), если вы хотите, чтобы он был доступен позже.

 old_DISPLAY=$DISPLAY unset DISPLAY … DISPLAY=$old_DISPLAY 

Если вы хотите запустить одну команду без переменной окружения, используйте команду env .

 env -u DISPLAY emacs 

Вы также можете использовать синтаксис VAR=VALUE COMMAND для установки переменной окружения VAR на указанное значение только для этой одной команды.

 $ echo $DISPLAY :0 $ DISPLAY=:1 xterm & # shows the xterm window on display :1 $ echo $DISPLAY :0 

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

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

 $ env | grep -E 'FOO|BAR' FOO=value_of_FOO BAR=value_of_BAR $ (export FOO=other_value; unset BAR; env | grep -E 'FOO|BAR') FOO=other_value $ env | grep -E 'FOO|BAR' FOO=value_of_FOO BAR=value_of_BAR 

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

 $ bash $ # change the environment, change directories, etc. $ exit $ # now you're back to the parent shell with its environment as you left it 
  • очистить все переменные без закрытия терминала
  • если инструкция в .bashrc работает неправильно
  • Установка переменной среды с помощью сценария оболочки
  • Как установить переменную среды в командной строке и отобразить ее в командах?
  • Makefile make install не выполняет несколько строк
  • bash: export: `PATH: home / pi / netkit / bin: / usr / local ... invalid indentifier
  • Введение env --null
  • Условно-экспортная переменная командной строки
  • Попытка понять .bashrc, env и export
  • Как определить, где определена переменная среды?
  • Исходный (.) Контурный выход
  • Linux и Unix - лучшая ОС в мире.