Как сбросить среду оболочки?


25

Эта проблема беспокоила меня некоторое время, и хотя я думал, что нашел свой ответ через EnvWatcher , к сожалению, он работает только на Bash. И я использую Zsh.

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

Как например, я хотел бы иметь следующий рабочий процесс.

source some-functions
alias another-thing
export SVN_EDITOR=vim
RESET-ZSH # none of the above are valid any more

Есть ли такая встроенная возможность, или я гоняюсь за бабочками?

Ответы:


32

Вы можете просто exec zsh, что даст вам свежий Zsh и перезапустить функции инициализации. Обратите внимание, что exec zsh -lдля входа в систему zsh необходимо сохранить статус «оболочка входа». Я не знаю, насколько хорошо он сохраняет историю команд (мне кажется, это работает, но если вы используете несколько оболочек в разных терминалах, вы можете получить «перекрестные помехи» между историей двух оболочек)


4
Это не отменит экспортированные переменные окружения, не так ли? (Хотя все, что установлено вашим файлом инициализации, будет сброшено.)
cjm

Вероятно, это не так. Я не рассматривал этот аспект, потому что я не думал о переменных среды как о чем-то, что вы временно устанавливаете в оболочке.
Random832

15

Чтобы отменить экспортированные переменные среды, вы можете использовать envкоманду env -i zsh. envзапускает команду, заданную в качестве аргумента, и -iдает ей чистую среду.

В зависимости от конфигурации, возможно , потребуется добавить -lк zsh /  bashдля того , чтобы загрузить ваши .profile, и вы также , возможно , потребуются «бутстрап» среда с , $HOMEтак что оболочка знает , где найти файлы запуск. В целом это выглядит так:

env -i HOME="$HOME" zsh -l

1
Вам может понадобиться несколько других, как TERMи DISPLAY.
G-Man говорит «Восстановить Монику»
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.