Questão Como posso fazer o tmux usar meu shell padrão?


Em uma nova configuração, o tmux está usando o bash ao invés do meu padrão (zsh).

Como posso forçá-lo a usar o zsh?


117


origem


Descobri isso. Pode definir o seguinte na configuração do tmux: set -g default-command / bin / zsh set -g default-shell / bin / zsh - re5et
FWIW, você não precisa definir o default-command se tiver definido o shell padrão. - Nicholas Riley


Respostas:


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

dentro ~/.tmux.conf ou /etc/tmux.conf. Funciona no Fedora.

Você pode ter que reiniciar o tmux com killall tmux; tmux


150



Se isso não funcionar para você, certifique-se de reiniciar tmux. Parece óbvio, mas me levou uma boa hora para descobrir! - Andy Smith
BTW: Reiniciando tmux significa killall tmux; tmux. Demorei um bom tempo para descobrir. - js-coder
Configs pode ser recarregado sem matar um servidor: bind R source-file ~/.tmux.conf \; display-message " Config reloaded..". - ДМИТРИЙ МАЛИКОВ
Ou simplesmente execute tmux source-file ~/.tmux.conf da linha de comando. - Petr Pudlák
@ js-coder: para matar mais limpa o seu servidor tmux eu recomendo tmux kill-server em vez de. - Chuim


Primeiro, assegure-se de que seu shell padrão esteja configurado corretamente para zsh, executando isto em sua linha de comando:

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

Colocando o seguimento em seu ~ / .tmux.conf é uma opção mais robusta para qualquer shell.

set-option -g default-shell $SHELL

32



Não é necessário definir o shell do usuário (chsh -s) como o tmux oferece uma opção independente disso. - Mahmoud Al-Qudsi


Largue esta linha no fundo do seu ~/.tmux.conf

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

Depois de adicionar isso, mate e reinicie o seu servidor tmux e todos devem funcionar.


17



Há alguma indicação de que o re5et (o OP) está em um Mac ou o programa wrapper está instalado? - Chris Johnsen
Eu acho que essa resposta só funciona para o Mac OS X - EhevuTov
tmux kill-server é o comando para finalizar todos os servidores tmux - Keith Smiley
Embora não tenha sido a resposta que o OP pediu, acabei nesse segmento e, de fato, estou no OS X, usando esse wrapper, e essa é a solução que eu precisava; então obrigado! - Jose Alban
como isso difere de set-option -g default-shell ? o acima não parece funcionar com a casca de peixe. - Tommy


Usar chsh(1):

chsh -s /bin/zsh $USER

1



Eu já tinha esse conjunto, mas o tmux estava ignorando isso. - re5et


Logout e login novamente consertaram meu problema. Quando ecoado $SHELL Estava quieto /bin/bash mas após o logout foi alterado para /usr/bin/zsh


1





Se você quiser forçar o tmux a usar o mesmo shell especificado em sua variável de ambiente, você pode usar:

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

na tua ~/.tmux.conf ou /etc/tmux.conf.

Você pode precisar tmux kill-server e depois tmux para reiniciar o tmux.


1



Esta é a única resposta que funcionou para mim (o comando tmux kill-server) - undefined


Adicione isto ao seu ~/.tmux.conf

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

0