Question Comment puis-je faire en sorte que tmux utilise mon shell par défaut?


Sur une nouvelle configuration, tmux utilise bash au lieu de ma valeur par défaut (zsh).

Comment puis-je le forcer à utiliser zsh?


118
2018-03-06 05:04


origine


deviner. Peut définir ce qui suit dans la configuration de tmux: set -g default-command / bin / zsh set -g default-shell / bin / zsh - re5et
FWIW, vous n'avez pas besoin de définir default-command si vous avez défini default-shell. - Nicholas Riley


Réponses:


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

dans ~/.tmux.conf ou /etc/tmux.conf. Fonctionne sur Fedora.

Vous devrez peut-être redémarrer tmux avec killall tmux; tmux


151
2018-02-10 04:38



Si cela ne fonctionne pas pour vous, alors assurez-vous de redémarrer tmux. Semble évident, mais il m'a fallu une bonne heure pour comprendre! - Andy Smith
BTW: Redémarrer signifie tmux killall tmux; tmux. Il m'a fallu du temps pour comprendre. - js-coder
Les configurations peuvent être rechargées sans tuer un serveur: bind R source-file ~/.tmux.conf \; display-message " Config reloaded..". - ДМИТРИЙ МАЛИКОВ
Ou simplement courir tmux source-file ~/.tmux.conf à partir de la ligne de commande. - Petr Pudlák
@ js-coder: pour mieux tuer votre serveur tmux, je vous recommande tmux kill-server au lieu. - Chuim


Assurez-vous d'abord que votre shell par défaut est correctement défini sur zsh en l'exécutant dans votre ligne de commande:

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

En plaçant la suite dans votre ~ / .tmux.conf est une option plus robuste pour tout shell.

set-option -g default-shell $SHELL

32
2018-02-29 00:25



Il est inutile de définir le shell utilisateur (chsh -s) comme tmux offre une option indépendante de cela. - Mahmoud Al-Qudsi


Déposez cette ligne au bas de votre ~/.tmux.conf

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

Après avoir ajouté cela, tuez et redémarrez votre serveur tmux et tout devrait fonctionner.


17
2018-01-31 16:25



Er, y a-t-il une indication que re5et (l'OP) est sur un Mac, ou est-ce que ce programme est installé? - Chris Johnsen
Je pense que cette réponse ne fonctionne que pour Mac OS X - EhevuTov
tmux kill-server est la commande pour mettre fin à tous les serveurs tmux - Keith Smiley
Bien que ce ne soit pas la réponse que l'OP demandait, je me suis retrouvé dans ce thread et je suis en effet sous OS X, en utilisant ce wrapper, et c'est la solution dont j'avais besoin; alors merci! - Jose Alban
en quoi cela diffère-t-il de set-option -g default-shell ? Ce qui précède ne semble pas fonctionner avec la coquille de poisson. - Tommy


Utilisation chsh(1):

chsh -s /bin/zsh $USER

1
2018-03-06 05:22



J'avais déjà cet ensemble, mais tmux l'ignorait. - re5et


Déconnexion et connexion à nouveau corrigé mon problème. En écho $SHELL il était toujours /bin/bash mais après la déconnexion, il a été changé en /usr/bin/zsh


1
2018-01-05 12:18





Si vous voulez forcer tmux à utiliser le même shell que celui spécifié dans votre variable d'environnement, vous pouvez utiliser:

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

dans ton ~/.tmux.conf ou /etc/tmux.conf.

Vous devrez peut-être tmux kill-server et alors tmux redémarrer tmux.


1
2017-07-29 19:09



C'est la seule réponse qui a fonctionné pour moi (la commande tmux kill-server) - undefined


Ajoutez ceci dans votre ~/.tmux.conf

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

0
2018-06-19 16:49





tmux semble utiliser le SHELL variable d'environnement, donc ce qui suit devrait fonctionner:

SHELL=/usr/bin/zsh tmux

ou

env SHELL=/usr/bin/zsh tmux

0
2018-04-12 20:54



Je ne sais pas pourquoi cela a été voté. Cela semble être correct: un problème commun consiste à utiliser un shell différent, par ex. iTerm mais en laissant le shell de connexion comme /bin/bash pour ne rien casser de pauses non itératives. iTerm ne mettra pas $SHELL au nouveau nom de shell (pourquoi pas sûr), et l'initialisation bash le définira sur le shell de connexion s'il n'est pas configuré au démarrage. tmux utilise alors cette valeur si default-shell n'est pas défini explicitement. - Sam Brightman
Ouais peut-être env SHELL=/usr/bin/zsh tmux est mieux? (mis à jour la réponse). - blueyed