Me gustaría que mi bash shell predeterminado vaya directamente a tmux en lugar de que siempre tenga que escribir tmux cada vez.
79
Esto parece funcionar ...
https://wiki.archlinux.org/index.php/Tmux#Start_tmux_on_every_shell_login
Simplemente agregue la siguiente línea de código bash a su .bashrc antes de sus alias; El código para otros shells es muy similar:
[[ $TERM != "screen" ]] && exec tmux
[[ $- != *i* ]] && return
no ser un ciclo infinito (de la misma página)TERM
del usuario puede establecer otro valor.tmux.conf
. Es mejor verificar si laTMUX
variable está establecida o no.La respuesta de @ StarNamer es generalmente precisa, aunque generalmente incluyo las siguientes pruebas para asegurarme de que (1) tmux existe en el sistema, (2) estamos en un shell interactivo y (3) tmux no intenta ejecutarse dentro de sí mismo:
Referencias
command
para verificar la existencia de un comando: http://man7.org/linux/man-pages/man1/bash.1.html#SHELL_BUILTIN_COMMANDScommand
lugar dewhich
verificar la existencia de comandos - https://unix.stackexchange.com/a/85250$PS1
para verificar el shell interactivo: https://www.gnu.org/software/bash/manual/html_node/Is-this-Shell-Interactive_003f.html$TERM
la variable de entorno "para todos los programas que se ejecutan dentro de tmux" - http://man7.org/linux/man-pages/man1/tmux.1.html#WINDOWS_AND_PANESfuente
command
antes pero no me di cuenta de que existía.exec
declaración no le permite salir de tmux sin salir de la terminal completa! : |exec
reemplaza el proceso actual por uno nuevo; en este caso, reemplaza el shell de inicio de sesión de bash por tmux, por lo que cuando tmux sale, no hay otro terminal al que recurrir :)exec tmux
con su sabor preferido detmux attach
exec tmux
usar,exec tmux new-session -A -s main
por lo que siempre tendré una sesión llamada main y la adjuntaré (en lugar de crear una nueva cada vez que me conecte a mi máquina remota) pero no se bloqueará como se usatmux attach
en caso de que no haya una sesión disponible (que se encuentra aquí: unix.stackexchange.com/a/176885/256942 )Agregar una línea como
en su archivo bashrc probablemente hará el trabajo. Tenga en cuenta que esta línea saldrá de ssh y finalizará la conexión una vez que desconecte o salga de tmux. Me gusta esta configuración, ya que guarda las pulsaciones de teclas para terminar la conexión. Pero si no le gusta esto (lo cual creo que es muy poco probable) y prefiere permanecer en el shell de inicio de sesión después de la finalización, simplemente elimine la
exit
parte:También tenga en cuenta que no debe envolver
tmux attach
conexec
, ya que esto causa que la conexión se cierra cuando no hay sesiones TMux para adjuntar a.fuente
Hay un comando
chsh
que cambia el shell de inicio de sesión. Consultarman chsh
.fuente
tmux
no es un shell, es un multiplexor terminal como la pantalla GNU. Curiosamente, admite la-c
opción de acuerdo con la página de manual , por lo que puede funcionar como un shell lo suficiente como para usarlo como su shell de inicio de sesión, pero sospecho que no funcionará correctamente en todas las situaciones, por ejemplo, inicios de sesión gráficos a través de gdm / kdm .ssh $some_server echo foo
)./etc/shells
, por lo que es un shell de inicio de sesión válido.default-shell
configuración en la configuración de tmux para que apunte a un shell real.Estoy usando con éxito
en mi
.zshrc
. Si estás usando bash, ponlo en tu.bashrc
lugar.También intenté configurarlo
tmux
como mi shell predeterminado (chsh -s $(which tmux)
) y parece interrumpir la ejecución directa de comandos a través de SSH, por ejemplossh $some_server echo foo
, no producirá ningún resultado.fuente
Ir a las preferencias de terminal.
Y luego haga clic en la barra de "comando".
Marque la opción "Ejecutar un comando personalizado en lugar de mi venta" y escriba el comando que desee ejecutar al inicio de su terminal.
fuente
Ninguna de las respuestas anteriores funcionó para mí: me
exec tmux
impide cerrar tmux sin salir del shell (ya sea que se abra conCtrl
+T
o desde el menú de la aplicación).Utilizo Linux Mint, que le permite asignar ciertas teclas de acceso rápido a comandos, y (aunque no sea kosher para algunos ...) Tengo bash shells con comandos que comienzan allí, por ejemplo,
Win
+Alt
+B
hace algún tipo debash -exec(vim)
enunciado complicado edito mi .bashrc, para que actúe como un shell normal.tmux cargó en lugar de vim en esa situación después de colocar lo anterior en la parte superior de mi
.bashrc
. He envuelto la línea de ejecución de tmux en otra instrucción if, verificando que se esté ejecutando en modo interactivo.Podrías envolver todo eso en una línea, pero para facilitar la lectura, creo que está bien.
fuente
[[ ! $TERM =~ screen ]] && [ -z $TMUX ] && exec tmux &
Agregando a la respuesta de @Louis Maddox, ejecutaría tmux part con;
fuente
exec sh -c 'tmux a || tmux'
, que (después de ver su respuesta) probablemente hará que sucedan cosas malas si tmux no puede comenzar por alguna razón ... gracias, usaré la suya de ahora en adelante :)tmux new -A -s mysession
probablemente también funcionará.Esto está en mi
~/.profile
(estoy usandoksh93
):Si la
TMUX
variable de entorno no está configurada / vacía, entonces aún no estamos en una sesión tmux, así que ...Si
tmux has-session
regresa con un estado de salida cero (verdadero), hay una sesión disponible para adjuntar. Adjuntar a ella.Si no, cree una nueva sesión.
También es posible usarlo
tmux
como su shell de inicio de sesión. Sin embargo, si hace esto, asegúrese de establecerdefault-shell
un shell real en su~/.tmux.conf
archivo (consulte el manual de tmux para obtener más información al respecto).fuente
Podrías (y probablemente ahora deberías) usar el
chsh
comando para configurar tmux como shell predeterminado y luego agregar lo siguiente a.tmux.conf
:Solo recuerde modificar la ruta al final de la línea.
fuente
Combiné las comprobaciones extensivas, con la comprobación de sesión condicional, y le di mi propio giro, para crear una sesión predeterminada que está conectada o creada. A menos que esté dentro de otra sesión de tmux, o se cumplan otras condiciones de protección.
Basado en estas respuestas:
https://unix.stackexchange.com/a/306165/198110
https://unix.stackexchange.com/a/113768/198110
fuente
Agregue esto a su
~/.tmux.conf
fuente
Como Mikel ya dijo en su comentario que tiene tmux como su shell de inicio de sesión puede tener efectos secundarios. Pero puedes hacer
tmux
tu shell predeterminado, literalmente. El shell predeterminado de un usuario se define en / etc / passwd. Para que pueda convertirse en root y editar / etc / passwd, por ejemplo,sudo vi /etc/passwd
busque la línea que comienza con su nombre de usuario. Probablemente termina con:/bin/bash
. Cambie / bin / bash a / usr / bin / tmux y ahora tmux es su shell de inicio de sesión predeterminado.Sin embargo, no hay garantía de que esto no cause problemas.
Lo que puede funcionar mejor es NO hacer nada que requiera privilegios de root. Intentaría crear un archivo en mi directorio de inicio llamado .bash_login e iniciar tmux desde ese archivo: `echo" tmux "> ~ / .bash_login.
Esto debería funcionar, pero debe intentar encontrarlo usted mismo, porque la documentación de bash no es muy exacta sobre qué archivo se lee y se ejecuta cuando.
fuente
chsh
hace! Excepto que su camino requiere ser root y es propenso a errores. Ejecutartmux
desde.bash_login
es más probable que rompa inicios de sesión remotos.