Як скинути середовище оболонки?


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 і повторно запустить функції init. Зауважте, що вам знадобиться exec zsh -lдля входу zsh, щоб зберегти його статус "оболонки для входу". Я не знаю, наскільки добре він зберігає історію команд (здається, це працює для мене, але якщо ви використовуєте кілька оболонок в різних терміналах, ви можете отримати «перехресний перелік» між двома історіями оболонок)


4
Це не скасує експортовані змінні середовища, чи не так? (Хоча будь-який, що встановлений вашим файлом init, буде скинутий.)
cjm

Напевно, не було б. Я не розглядав цей аспект, тому що не думав про змінні середовища як про щось, що ви тимчасово встановили в оболонці.
Випадково832

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.