¿Por qué 'tmux' crea nuevas ventanas como shells de inicio de sesión por defecto?

24

Cuando inicia una nueva sesión tmuxo crea una nueva ventana dentro de una sesión en ejecución, su comportamiento predeterminado es ejecutar un shell (ej .:) bashcomo un shell de inicio de sesión.

Entiendo que un shell de inicio de sesión está destinado a ejecutar una rutina de configuraciones y procedimientos que son de interés justo cuando está iniciando sesión en un sistema . Pero en la mayoría de los casos (con la excepción de que se puede usar tmux como un shell de inicio de sesión) no es la verdadera intención del usuario hacer esto cuando solo quiere abrir una nueva ventana.

Entonces, ¿cuál es la razón para hacer de este el comportamiento predeterminado tmux?


Lo único que dice la documentación sobre el asunto:

default-command  shell-command
        Set the command used for new windows (if not specified when the
        window is created) to shell-command, which may be any sh(1)
        command.  The default is an empty string, which instructs tmux
        to create a login shell using the value of the default-shell
        option.
leogama
fuente

Respuestas:

22

El shell interactivo sin inicio de sesión generalmente nunca sobrevive al shell de inicio de sesión de nivel superior, por lo tanto, pueden esperar que las instalaciones iniciadas por él estén disponibles en cualquier momento, pero este no es el caso con tmux:

  • inicia sesión en su shell -> se ejecutan sus scripts de inicio de sesión
  • ejecutas tmux, haces algo, despegas
  • salga de su shell de nivel superior -> sus scripts de cierre de sesión se ejecutan
  • la sesión de tmux todavía se está ejecutando, pero las instalaciones iniciadas por su shell de inicio de sesión no están disponibles en este momento
  • inicie sesión nuevamente y vuelva a adjuntar desde otro shell de inicio de sesión
  • tmux no puede ver ninguna instalación iniciada por el nuevo shell de inicio de sesión porque todavía se está ejecutando con el entorno anterior (aunque haya comandos para actualizar el entorno)

Algunos pueden pensar que tener shells de inicio de sesión de tmux start es innecesario de todos modos porque en la mayoría de las configuraciones no hay scripts de cierre de sesión, y los scripts de inicio de sesión solo configuran algunas variables de entorno.

Además, si agrega cadenas a sus variables de entorno en sus scripts de inicio de sesión (como este: PATH = $ PATH: / some / other / path) y se ejecutan más de una vez en la misma jerarquía de proceso, termina con duplicados, y esto es el más molesto.

Pero aún tiendo a pensar que el valor predeterminado tiene sentido.

Vea también esto: http://openbsd-archive.7691.n7.nabble.com/tmux-and-login-shells-td170948.html

León
fuente
2
Gracias por la respuesta y por el enlace! Creo que puedo vivir con exec shel final ... (No había pensado en eso.)
leogama
3
¿Tiene algún ejemplo concreto de cosas que podrían romperse si tmux no generara un shell de inicio de sesión? Estoy pensando en hacer que ese sea mi valor predeterminado, pero no quiero encontrar problemas difíciles de diagnosticar en el futuro.
Carl Patenaude Poulin