Restablecer el entorno del terminal para iniciar el estado, sin perder la impresión del historial

1

Esto puede parecer un duplicado a primera vista, pero esperen un minuto.

TLDR; Una forma rápida de línea de comandos para restaurar todo el entorno de shell al igual que en el inicio del terminal, sin perder la impresión (desplazarse hacia arriba) de los comandos ejecutados anteriormente y sus salidas.

Realmente me gustaría una forma rápida de restablecer el entorno de shell a su estado de inicio, como salir del programa de terminal y volver a iniciarlo (o abrir una nueva pestaña). La razón por la que no quiero salir del programa y volver a iniciarlo es que no quiero perder el historial, es decir, la impresión de los comandos y resultados anteriores. (Compare para borrar en MATLAB, que elimina todas las variables, las definiciones de funciones et.c. que haya establecido en esa sesión sin eliminar la impresión de los comandos y resultados anteriores).

El consejo habitual que recibe la gente al preguntar esto es

source ~/.bash_profile

Sin embargo, por ejemplo, esto no restaura $ PATH al valor que tiene cuando el programa de terminal se abre por primera vez. Tengo algunas líneas como

export PATH=$PATH:/path/to/some/useful/stuff/

en mi $ PATH y por cada vez que hago una fuente, se agregan más cosas a mi variable $ PATH. Por lo tanto, no se restablece al valor de inicio de terminal en source . Lo mismo ocurre con cualquier otra variable establecida en esa sesión que no esté sobrescrita por alguna línea en el ~/.bash_profile

He visto a personas recomendar el comando reset también. Sin embargo, eso tampoco restaura mi $ PATH a su valor original. Se mantiene igual que antes del reinicio.

Simplemente estoy usando $PATH como ejemplo aquí, la pregunta es acerca de restablecer todo el entorno de shell.

Una forma rápida y confiable de restablecer el entorno de shell en el sentido que describo anteriormente sería muy útil al experimentar con instalaciones y cosas similares. También ver cómo se ve la variable $PATH me hace preguntarme qué otras cosas no se restablecen con source ~/.bash_profile , y no se puede utilizar como método de restablecimiento.

¡Gracias por leer hasta aquí!

¿Gente de soluciones?

    
pregunta Anton 11.04.2018 - 05:19

2 respuestas

1

Una opción para restablecer el estado de la sesión del terminal, excepto el historial, es guardar el historial actual en un archivo temporal con algo como history -w ~/.history_temp , luego cerrar la ventana del terminal, abrir una nueva y luego volver a leer el historial guardado con% código%. Opcionalmente, puedes eliminar el archivo de historial temporal cuando hayas terminado.

Si no desea tener que recordar & escribe esos comandos cada vez, puedes crear alias para ellos y ponerlos en history -w ~/.history_temp :

alias savehistory='history -w ~/.history_temp'
alias loadhistory='history -r ~/.history_temp && rm ~/.history_temp'
    
respondido por el Gordon Davisson 11.04.2018 - 05:39
1

Establecer la ruta original en una variable al comienzo de su sesión de terminal sería una solución simple.

ORIG_PATH="$PATH"

Luego, en cualquier momento, puede cambiar la variable PATH de nuevo a su estado original.

PATH="$ORIG_PATH"

Una solución más compleja sería establecer el PATH en el estado establecido por la aplicación loginwindow y luego ejecutar path_helper como en /private/etc/profile y fuente ~/.bash_profile .

# Does launchd set the PATH variable?

LPATH=$(launchctl getenv PATH)

if [ -z "$LPATH" ]
then
    PATH=$(getconf PATH)
    eval $(/usr/libexec/path_helper -s)
else
    PATH=$LPATH
    eval $(/usr/libexec/path_helper -s)
fi

. ~/.bash_profile

Ambas soluciones no requieren una nueva sesión de terminal.

    
respondido por el fd0 11.04.2018 - 16:17

Lea otras preguntas en las etiquetas