¿Cómo restablecer un entorno de shell?


25

Este problema me ha estado molestando por un tiempo, y aunque pensé que encontré mi respuesta a través de EnvWatcher , desafortunadamente solo funciona en Bash. Y yo uso zsh.

Me gustaría replicar lo que hace env-watcher, quizás en menor grado, pero necesito saber si hay un comando por el cual podría restablecer un shell a su etapa de inicio limpia.

Como por ejemplo, me gustaría tener el siguiente flujo de trabajo.

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

¿Existe tal posibilidad incorporada, o estoy persiguiendo mariposas?

Respuestas:


32

Podría simplemente exec zsh, lo que le dará un nuevo zsh y volverá a ejecutar las funciones init. Tenga en cuenta que necesitaría exec zsh -lun zsh de inicio de sesión para mantener su estado de "shell de inicio de sesión". No sé qué tan bien conserva el historial de comandos (parece funcionar para mí, pero si usa múltiples shells en diferentes terminales, podría obtener una "diafonía" entre el historial de los dos shells)


44
Eso no deshacería las variables de entorno exportadas, ¿verdad? (Aunque cualquiera de los que establezca su archivo init se restablecería).
cjm

Probablemente no lo haría. No había considerado ese aspecto porque no estaba pensando en las variables de entorno como algo que estableciste temporalmente en el shell.
Random832

15

Para deshacer las variables de entorno exportadas, puede usar el envcomando env -i zsh. envejecuta el comando dado como argumento y -ile da un entorno limpio.

Dependiendo de la configuración, es posible que deba agregar -la zsh /  bashcon el fin de cargar el .profile, y es posible que también tenga que "arranque" con su entorno $HOMEpara que el shell sabe dónde encontrar los archivos de inicio. En total, esto se ve así:

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

1
Es posible que necesite algunos otros, como TERMy DISPLAY.
G-Man dice 'Restablecer a Mónica' el
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.