tmuxでデフォルトのシェルを使用するにはどうすればよいですか?


155

新しいセットアップでは、tmuxはデフォルト(zsh)の代わりにbashを使用しています。

zshの使用を強制するにはどうすればよいですか?


12
理解した。tmuxの設定で次を設定できます
。set

4
FWIW、default-shellを設定した場合、default-commandを設定する必要はありません。
ニコラスライリー

回答:


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

~/.tmux.confまたは/etc/tmux.conf。Fedoraで動作します。

tmuxの再起動が必要になる場合があります killall tmux; tmux


5
これがうまくいかない場合は、再起動してくださいtmux。当たり前のように思えますが、理解するのに十分な時間がかかりました!
アンディスミス

27
ところで:tmuxの手段を再起動しますkillall tmux; tmux。理解するのにかなり時間がかかった。
js-coder

5
サーバーをbind R source-file ~/.tmux.conf \; display-message " Config reloaded..".
強制終了

14
または、単にtmux source-file ~/.tmux.confコマンドラインから実行します。
ペトルスキー-パドラック

12
@ js-coder:tmuxサーバーをよりきれいに強制終了するには、tmux kill-server代わりに推奨します。
チュイム

41

まず、コマンドラインで次のコマンドを実行して、デフォルトシェルがzshに正しく設定されていることを確認します。

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

〜/ .tmux.confに以下を配置することは、シェルにとってより堅牢なオプションです。

set-option -g default-shell $SHELL

1
chsh -stmux にはそれとは独立したオプションが用意されているため、ユーザーシェル()を設定する必要はありません。
マフムードアルクシ

$ SHELL変数を使用する方が堅牢だと思いました。しかし、それは余分なステップと混乱を追加するので、受け入れられた答えを好みます。
DebugXYZ

これは、受け入れられている答えよりも優れています。私のzshは/ bin / zshにインストールされていません。
HappyFace

20

この行を下にドロップします ~/.tmux.conf

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

それを追加した後、tmuxサーバーを強制終了して再起動すると、すべてが機能するはずです。


2
えー、re5et(OP)がMac上にある、またはそのラッパープログラムがインストールされているという兆候はありますか?
クリスジョンセン

1
この答えはMac OS Xでのみ機能すると思います
-EhevuTov

5
tmux kill-serverすべてのtmuxサーバーを終了するコマンドです
キーススマイリー

1
OPが求めた答えではありませんでしたが、私はこのスレッドに行き着き、実際にこのラッパーを使用してOS Xを使用しています。これが必要なソリューションです。ありがとう
ホセ・アルバン

1
これはどう違いますset-option -g default-shell か?上記はFishシェルでは機能しないようです。
トミー

5

tmuxに環境変数で指定されたものと同じシェルを使用するように強制する場合は、次を使用できます。

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

あなたの中~/.tmux.conf/etc/tmux.conf

実際に変更を有効にするを取得するには、する必要があるかもしれませんtmux kill-serverし、その後、tmuxtmuxは再起動します。


1
これは私のために働いた唯一の答えです(tmux kill-serverコマンド)
未定義


2

ログアウトして再度ログインすると、問題が解決しました。エコー$SHELLしたときはまだ/bin/bashでしたが、ログアウト後は次のように変更されました/usr/bin/zsh


2

tmuxはSHELL環境変数を使用しているように見えるため、次のように機能します。

SHELL=/usr/bin/zsh tmux

または

env SHELL=/usr/bin/zsh tmux

なぜこれがダウン投票されたのかはわかりません。正しいようです:一般的な問題は、たとえばiTermに別のシェルを使用しているが、ログインシェルを残して/bin/bash、非対話型の中断がないようにすることです。iTermは$SHELL新しいシェル名に設定せず(理由は不明)、起動時に設定を解除すると、bashの初期化によってログインシェルに設定されます。tmuxは、default-shell明示的に設定されていない場合、この値を使用します。
サムブライトマン

うん..多分env SHELL=/usr/bin/zsh tmux良いですか?(答えを更新しました)。
16年


1

受け入れられた答えは私にはうまくいきませんでした。

私は両方を書かなければなりませんでした

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

そして

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

in ~/.tmux.conf—忘れずにtmux kill-server; tmuxtmux.confをリロードします


私はtmux -Vgnome-shellエミュレーターのUbuntu 18で2.6 を使用しています。

また、https://github.com/samoshkin/tmux-configで tmuxを強化しました。それを確認してください、それは本当にクールです。


0

私にとっては、交換する必要がありました:

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

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

.tmux.conf 、コマンドを実行しますtmux kill-server; tmux


これは、回答superuser.com/a/1370909/174140の複製です。
174140

@johnのset-option -g代わりに使用しましたset -g。おそらくtmuxの異なるバージョン
アリAminの

setはのエイリアスですset-option
174140
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.