¿Cómo puedo hacer que tmux use mi shell predeterminado?


155

En una nueva configuración, tmux está usando bash en lugar de mi predeterminado (zsh).

¿Cómo puedo forzarlo a usar zsh?


12
Lo averigué. Puede configurar lo siguiente en tmux config: set -g default-command / bin / zsh set -g default-shell / bin / zsh
re5et

44
FWIW, no necesita establecer el comando predeterminado si ha configurado el shell predeterminado.
Nicholas Riley

Respuestas:


203
set-option -g default-shell /bin/zsh

en ~/.tmux.confo /etc/tmux.conf. Funciona en Fedora.

Puede que tenga que reiniciar tmux con killall tmux; tmux


55
Si esto no funciona para usted, asegúrese de reiniciar tmux. Parece obvio, ¡pero me tomó una buena hora descubrirlo!
Andy Smith

27
Por cierto: reiniciar tmux significa killall tmux; tmux. Me llevó bastante tiempo darme cuenta.
js-coder

55
Las configuraciones se pueden volver a cargar sin matar un servidor:bind R source-file ~/.tmux.conf \; display-message " Config reloaded..".
ДМИТРИЙ МАЛИКОВ

14
O simplemente ejecute tmux source-file ~/.tmux.confdesde la línea de comando.
Petr Pudlák

12
@ js-coder: para matar más limpiamente su servidor tmux, recomendaría en su tmux kill-serverlugar.
Chuim

41

Primero asegúrese de que su shell predeterminado esté configurado correctamente en zsh ejecutando esto en su línea de comando:

chsh -s $(`which zsh`) $USER

Colocar los siguientes en su ~ / .tmux.conf es una opción más robusta para cualquier shell.

set-option -g default-shell $SHELL

1
No es necesario configurar el shell del usuario ( chsh -s) ya que tmux ofrece una opción independiente de eso.
Mahmoud Al-Qudsi

Pensé que era más robusto usar la variable $ SHELL. Pero agrega un paso adicional y confusión, así que prefiero la respuesta aceptada.
DebugXYZ

Esto es mejor que la respuesta aceptada. Mi zsh no está instalado en / bin / zsh.
HappyFace

20

Suelta esta línea en la parte inferior de tu ~/.tmux.conf

set-option -g default-command "reattach-to-user-namespace -l zsh"

Después de agregar eso, elimine y reinicie su servidor tmux y todo debería funcionar.


2
Er, ¿hay alguna indicación de que re5et (el OP) está en una Mac, o tiene ese programa envoltorio instalado?
Chris Johnsen

1
Creo que esta respuesta solo funciona para Mac OS X
EhevuTov

55
tmux kill-serveres el comando para finalizar todos los servidores tmux
Keith Smiley

1
Aunque no fue la respuesta que solicitó el OP, terminé en este hilo y de hecho estoy en OS X, usando este contenedor, y esta es la solución que necesitaba; ¡Así que gracias!
Jose Alban

1
¿Cómo difiere esto de set-option -g default-shell ? lo anterior no parece funcionar con la concha de pescado.
Tommy

5

Si desea forzar a tmux a usar el mismo shell especificado en su variable de entorno, puede usar:

# force SHELL ENV variable as shell
set-option -g default-shell ${SHELL}

en tu ~/.tmux.confo /etc/tmux.conf.

Para que el cambio surta efecto, es posible que deba reiniciar tmux tmux kill-servery luego tmuxreiniciarlo.


1
Esta es la única respuesta que funcionó para mí (el comando tmux kill-server)
indefinido el

3

Parece que tmux usa la SHELLvariable de entorno, por lo que lo siguiente debería funcionar:

SHELL=/usr/bin/zsh tmux

o

env SHELL=/usr/bin/zsh tmux

No estoy seguro de por qué esto fue rechazado. Parece ser correcto: un problema común es usar un shell diferente para, por ejemplo, iTerm, pero dejar el shell de inicio de sesión /bin/bashpara garantizar que no haya interrupciones no iterativas. iTerm no se establecerá $SHELLcon el nuevo nombre de shell (no estoy seguro de por qué), y la inicialización de bash lo establecerá en el shell de inicio de sesión si no está configurado al inicio. tmux luego usa este valor si default-shellno se establece explícitamente.
Sam Brightman, el

Sí ... tal vez env SHELL=/usr/bin/zsh tmuxes mejor? (actualizado la respuesta).
azulada el


2

Cerrar sesión y volver a iniciar sesión solucionó mi problema. Cuando se hizo eco $SHELL, todavía estaba, /bin/bashpero después de cerrar sesión se cambió a/usr/bin/zsh


1

Agregue esto a su ~/.tmux.conf

set -g default-command /usr/local/bin/fish

1

La respuesta aceptada no funcionó para mí.

Tuve que escribir ambos

set -g default-shell "/bin/bash"

y

set -g default-commanmd "/bin/bash"

en mi ~/.tmux.conf- No te olvides tmux kill-server; tmuxde recargar tmux.conf


Estoy usando tmux -V2.6 bajo Ubuntu 18 en el emulador gnome-shell.

También mejoré tmux con https://github.com/samoshkin/tmux-config . Compruébalo, es realmente genial.


0

Para mí tuve que reemplazar:

default-command "/usr/local/bin/fish"
default-shell "/usr/local/bin/fish"

con

set-option -g default-command "/usr/local/bin/fish"
set-option -g default-shell "/usr/local/bin/fish"

entrar .tmux.conf y ejecutar el comandotmux kill-server; tmux


Este es un duplicado de la respuesta superuser.com/a/1370909/174140 .
174140

@ John que he usado en set-option -glugar de set -g. diferentes versiones de tmux muy probablemente
Ali Amin

setes un alias para set-option.
174140
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.