¿Cómo hago que las sesiones de terminal se reanuden en Lion con iterm2 y tcshrc?

2

Mi entendimiento es que con Lion mis ventanas de terminal deberían restaurar su estado. Sin embargo, esto no me pasa. Me pregunto si esto es porque uso tcsh en lugar de bash?

¿Hay algo que pueda hacer para que mis sesiones de iterm2 se reanuden donde se quedaron?

Mi intento actual de hacer esto ha sido usar

 alias precmd 'if ( $?TERM_PROGRAM && ${TERM_PROGRAM} == "iTerm.app" ) /opt/local/libexec/gnubin/echo -ne "\033];$cwd\007"'
 set prompt = '%{\e]2;%~\a%}%S[%m:%c3] %n%#%s '

Pero esto solo establece las etiquetas de las pestañas. La etiqueta de la ventana obtiene los nombres de archivo abreviados con ~ en lugar del nombre completo del archivo. No sé si esto está relacionado con mi fracaso para obtener la reanudación de terminal. En cualquier caso, cuando salgo y reinicio todas mis ventanas de terminal, las pestañas están de vuelta en mi directorio de inicio.

Los puntos de bonificación adicionales serían una solución sensible al uso de slogin.

Tampoco puedo obtener el comportamiento de reanudación correcto con el Apple Terminal incorporado cuando cambio lo anterior a

if ( $?TERM_PROGRAM && ( ${TERM_PROGRAM} == "iTerm.app" || ${TERM_PROGRAM} == "Apple_Terminal") ) then
  alias precmd ' /opt/local/libexec/gnubin/echo -ne "\033];$cwd\007"'
  set prompt = '%{\e]2;%~\a%}%S[%m:%c3] %n%#%s '
endif

No vuelvo al mismo directorio de trabajo y, aunque puedo ver el historial de comandos, no puedo usarlo (no puedo usar ^ P para subir, por ejemplo, y el comando de historial no devuelve nada). Asique creer de alguna manera esto no funciona con tcsh, a diferencia de bash. Mis colegas me aseguran que no pierden el directorio de trabajo al salir de la aplicación.

Robert P. Goldman
fuente
3
Lion guarda y muestra el contenido de los búferes de desplazamiento hacia atrás (y solo para la aplicación Terminal incorporada: iTerm2 y otros están por su cuenta para respaldar la finalización repentina y la reanudación de la aplicación). Cosas como el directorio de trabajo y las variables de shell no se mantienen. ¿Está buscando usar pantallas como shell para guardar ese tipo de contenido mientras se ejecuta la Mac, pero la aplicación Terminal está cerrada?
bmike
bash es el shell predeterminado en OS X, y solo está configurado de forma predeterminada para coordinar con Terminal para restaurar el directorio de trabajo. Puedes ver el código que hace esto en /etc/bashrc. Puede que necesites encontrar a alguien que lo adapte para tcsh. En otro lugar en Stack Exchange publiqué un código equivalente para zsh.
Chris Page
1
Para guardar y restaurar un estado arbitrario, como las variables de entorno, tendrá que agregar código a sus scripts de configuración de shell para administrarlo. Para cada ventana / pestaña de terminal, Terminal establece una variable de entorno $TERM_SESSION_ID a una ID única; su valor exacto está sujeto a cambios, pero actualmente es un UUID. Al restaurar, restaura esta ID. Por ejemplo, puede usar la ID para generar una ruta de acceso al archivo y guardar los datos en ella, y luego leerla de nuevo cuando se inicie el shell. Es probable que desee eliminar periódicamente los datos de la sesión anterior, ya que no sabe si una sesión se restaurará nuevamente.
Chris Page

Respuestas:

3

Puedes agregar algo como esto al script de inicio de tu shell predeterminado (el mío es zsh, la mayoría de la gente usa bash, supongo, así que es posible que tengas que modificar).

Aquí está mi bit de jiggery-pokery de pantalla (en mi .zshrc)

# Autoload screen if we aren't in it.  (Thanks Fjord!)
if [[ $STY = '' ]] then screen -xRR; fi

Lo obtuve de algún lugar de las redes (no recuerdo dónde, y no sé quién es Fjord, pero sí lo es.

Con esto puede cerrar su ventana de iTerm, y se reanudará donde la dejó cuando la vuelva a abrir. Recomiendo leer la página del manual de pantalla también.

smackdaddy
fuente
¿Funciona si tiene más de una ventana de iTerm abierta? ¿Cómo se enganchan las sesiones de pantalla múltiple a varias sesiones de iTerm?
Robert P. Goldman