Вопрос: Как я могу заставить tmux использовать мою оболочку по умолчанию?


В новой настройке tmux использует bash вместо моего значения по умолчанию (zsh).

Как заставить ее использовать zsh?


117
2018-03-06 05:04


Источник


догадаться. Можно установить следующее в tmux config: set -g default-command / bin / zsh set -g default-shell / bin / zsh - re5et
FWIW, вам не нужно устанавливать команду по умолчанию, если вы установили оболочку по умолчанию. - Nicholas Riley


Ответы:


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

в ~/.tmux.conf или /etc/tmux.conf, Работает на Fedora.

Возможно, вам придется перезапустить tmux с помощью killall tmux; tmux


150
2018-02-10 04:38



Если это не работает для вас, убедитесь, что вы перезапустили tmux, Кажется очевидным, но у меня был хороший час, чтобы разобраться! - Andy Smith
BTW: перезапуск tmux означает killall tmux; tmux, Мне потребовалось некоторое время, чтобы понять. - js-coder
Конфигурации могут быть перезагружены без убийства сервера: bind R source-file ~/.tmux.conf \; display-message " Config reloaded..". - ДМИТРИЙ МАЛИКОВ
Или просто запустить tmux source-file ~/.tmux.conf из командной строки. - Petr Pudlák
@ js-coder: чтобы более чисто убить ваш tmux-сервер, я бы рекомендовал tmux kill-server вместо. - Chuim


Сначала убедитесь, что ваша стандартная оболочка правильно установлена ​​на zsh, выполнив ее в командной строке:

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

Размещение следующего ~ / .tmux.conf является более надежным вариантом для любой оболочки.

set-option -g default-shell $SHELL

32
2018-02-29 00:25



Нет необходимости устанавливать пользовательскую оболочку (chsh -s), поскольку tmux предлагает вариант, не зависящий от этого. - Mahmoud Al-Qudsi


Отбросьте эту строку внизу ~/.tmux.conf

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

После того, как вы добавите это, убейте и перезапустите tmux-сервер, и все должно работать.


17
2018-01-31 16:25



Er, есть ли какие-либо признаки того, что re5et (OP) находится на Mac или установлена ​​эта программа-оболочка? - Chris Johnsen
Я думаю, что этот ответ работает только для Mac OS X - EhevuTov
tmux kill-server это команда для завершения всех tmux-серверов - Keith Smiley
Хотя это был не тот ответ, который запросил OP, я оказался в этой теме, и действительно, я нахожусь в OS X, используя эту оболочку, и это необходимое мне решение; так что спасибо тебе! - Jose Alban
как это отличается от set-option -g default-shell ? выше, похоже, не работает с оболочкой Fish. - Tommy


использование chsh(1):

chsh -s /bin/zsh $USER

1
2018-03-06 05:22



У меня уже был этот набор, но tmux игнорировал его. - re5et


Выход из системы и вход в систему снова устранили мою проблему. Когда эхо $SHELL он все еще /bin/bash но после выхода из системы он был изменен на /usr/bin/zsh


1
2018-01-05 12:18





Если вы хотите заставить tmux использовать ту же оболочку, что и в вашей переменной окружения, вы можете использовать:

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

в вашей ~/.tmux.conf или /etc/tmux.conf,

Возможно, вам понадобится tmux kill-server а потом tmux перезапустить tmux.


1
2017-07-29 19:09



Это единственный ответ, который работал для меня (команда tmux kill-server) - undefined


Добавьте это в свой ~/.tmux.conf

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

0
2018-06-19 16:49





tmux, похоже, использует SHELL переменная среды, поэтому следующее должно работать:

SHELL=/usr/bin/zsh tmux

или

env SHELL=/usr/bin/zsh tmux

0
2018-04-12 20:54



Не уверен, почему это было отклонено. Это кажется правильным: общая проблема заключается в использовании другой оболочки, например. iTerm, но оставляя /bin/bash чтобы обеспечить отсутствие неиреактивных перерывов. iTerm не будет устанавливать $SHELL к новому имени оболочки (не знаю почему), и инициализация bash установит ее в оболочку входа, если она не установлена ​​при запуске. tmux использует это значение, если default-shell не задано явно. - Sam Brightman
Да, возможно env SHELL=/usr/bin/zsh tmux лучше? (обновленный ответ). - blueyed