題 如何讓tmux使用我的默認shell?


在新設置中,tmux使用bash而不是我的默認值(zsh)。

如何強制它使用zsh?


121
2018-03-06 05:04


起源


弄清楚了。可以在tmux config中設置以下內容:set -g default-command / bin / zsh set -g default-shell / bin / zsh - re5et
FWIW,如果你設置了default-shell,則不需要設置default-command。 - Nicholas Riley


答案:


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

~/.tmux.conf 要么 /etc/tmux.conf。適用於Fedora。

您可能需要重新啟動tmux killall tmux; tmux


158
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


首先確保通過在命令行中運行此命令將您的默認shell正確設置為zsh:

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

把你的下載放在你的 〜/ .tmux.conf 對於任何shell來說都是一個更強大的選項。

set-option -g default-shell $SHELL

33
2018-02-29 00:25



沒有必要設置用戶shell(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



呃,有沒有跡象表明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 ?以上似乎不適用於魚殼。 - 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使用環境變量中指定的相同shell,可以使用:

# 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