¿Cómo persisten las sesiones de terminal OS X a través de reinicios?

Como soy un ávido usuario de Linux antes de comprar una MacBook Pro, normalmente tengo varias tabs de terminal abiertas en cualquier momento.

En el pasado, los lockings y reinicios generalmente arruinaban mi flujo de trabajo y la mayoría de mis historiales de tabs respectivas. Busqué la manera de resolver este problema, pero siempre aparecía vacío; además de varias técnicas que utilizaban combinaciones de herramientas como ssh , screen , tmux , y requerían un server privado virtual (o similar).

  • CLI: obtenga la velocidad real de la CPU (por ejemplo, Intel SpeedStepping)
  • ¿Cómo saber qué versión tiene un DVD de Snow Leopard?
  • Coloque 2 videoclips en iMovie uno al lado del otro sin recortar
  • TextEdit Problemas de estilo de text simple chino
  • ¿Puedo restaurar el comportamiento de la tecla de encendido pre-Mavericks?
  • ¿Cómo vuelvo a habilitar el selector de caracteres Mantener presionado en OS X Lion?
  • Una de mis cosas favoritas acerca de usar mi MacBook Pro para escribir guiones, y usar herramientas CLI, etc .; es que mis sesiones de terminal persisten más allá de los lockings y se reinicia por defecto. De hecho, acabo de restaurar una copy de security de hace casi 2 años, y cuando entré por primera vez, me presentaron mi viejo escritorio y tres bash shells que comprendían un proyecto en el que estaba trabajando hace mucho time.

    Me gustaría saber cómo OS X hace que esta característica sea posible. ¿Alguien aquí tiene una idea de cómo funciona?

  • ¿Cómo evitar que Script Editor se desplace (y pierda la location del cursor) en la compilation?
  • ¿Existe alguna manera fácil de enumerar las herramientas CLI instaladas en macOS?
  • Establezca NFS v4 pnetworkingeterminado al conectarse desde Mac OS X Lion
  • ¿Lista blanca de uso de networking para el enlace de la célula en OSX?
  • Cómo ejecutar una aplicación no elaborada en el inicio en macOS Sierra
  • ¿Cómo recortar las páginas pares e impares de forma diferente en un PDF?
  • 2 Solutions collect form web for “¿Cómo persisten las sesiones de terminal OS X a través de reinicios?”

    El código para restaurar Terminal (en realidad bash sessions) es parte de /etc/bashrc_Apple_Terminal que se obtiene a través de /etc/profile y /etc/bashrc para cada session de bash ejecuta en Terminal.

     # Resume Support: Save/Restore Shell State # # Terminal assigns each terminal session a unique identifier and # communicates it via the TERM_SESSION_ID environment variable so that # programs running in a terminal can save/restre application-specific # state when quitting and restarting Terminal with Resume enabled. # # The following code defines a shell save/restre mechanism. Users can # add custom state by defining a shell_session_save_user_state function # that writes restration commands to the session file at exit. eg, # to save a variable: # # shell_session_save_user_state() { echo MY_VAR="'$MY_VAR'" >> "$SHELL_SESSION_FILE"; } # # During shell startup the session file is executed. Old files are # periodically deleted. # # The default behavior arranges to save and restre the bash command # history independently for each restnetworking terminal session. It also # merges commands into the global history for new sessions. Because # of this it is recommended that you set HISTSIZE and HISTFILESIZE to # larger values. # # You may disable this behavior and share a single history by setting # SHELL_SESSION_HISTORY to 0. There are some common user customizations # that arrange to share new commands among running shells by # manipulating the history at each prompt, and they typically include # 'shopt -s histappend'; therefore, if the histappend shell option is # enabled, per-session history is disabled by default. You may # explicitly enable it by setting SHELL_SESSION_HISTORY to 1. # # The implementation of per-session command histories in combination # with a shanetworking global command history is incompatible with the # HISTTIMEFORMAT variable--the timestamps are applied inconsistently # to different parts of the history; therefore, if HISTTIMEFORMAT is # defined, per-session history is disabled by default. # # Note that this uses PROMPT_COMMAND to enable per-session history # the first time for each new session. If you customize PROMPT_COMMAND # be sure to include the previous value. eg, # # PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND; }your_code_here" # # Otherwise, the per-session history won't take effect until the first # restre. # # The save/restre mechanism is disabled if the following file exists: # # ~/.bash_sessions_disable 

    Por lo que puedo decir, solo guarda el text en el buffer de desplazamiento de cada window. En realidad, no guarda el estado de lo que se estaba ejecutando en los terminales; simplemente comienza un nuevo shell después del reinicio.

    Como experimento, defina una variable en su caparazón y verifique su valor:

     foo=bar echo $foo 

    Luego reinicie y verifique el valor de la variable nuevamente. Verás que ya no está definido.

    Loving Apple Products like poisoning (iPhone, iPad, iMac, Macbook, iWatch).