私は毎回tmuxを入力するのではなく、デフォルトのbashシェルがtmuxを直接入力できるようにしたいです。
答え1
@StarNamerからの返信通常は正確ですが、一般的に確認するために次のテストを実行します。
tmux
システムに存在- 私たちはインタラクティブシェルにいます。
tmux
自体内で実行しようとしません。
だから私はこれを次に追加します.bashrc
:
if command -v tmux &> /dev/null && [ -n "$PS1" ] && [[ ! "$TERM" =~ screen ]] && [[ ! "$TERM" =~ tmux ]] && [ -z "$TMUX" ]; then
exec tmux
fi
引用する
- bash を使用して
command
コマンドが存在することを確認します。http://man7.org/linux/man-pages/man1/bash.1.html#SHELL_BUILTIN_COMMANDS - コマンドが存在するかどうかを確認する
command
のではなく、なぜ使用するのですか?which
https://unix.stackexchange.com/a/85250 - 対話型シェルを確認するには
$PS1
-https://www.gnu.org/software/bash/manual/html_node/Is-this-Shell-Interactive_003f.html $TERM
"tmux内で実行されているすべてのプログラムの"環境変数の予想状態 -http://man7.org/linux/man-pages/man1/tmux.1.html#WINDOWS_AND_PANES
答え2
シェルにログインするたびにtmuxを起動します。、Arch wikiで動作するようです。.bashrc
エイリアスの前に次のbash行を追加するだけです。他のシェルのコードも非常に似ています。
[[ $TERM != "screen" ]] && exec tmux
答え3
次の行を追加します。
[ -z "$TMUX" ] && { tmux attach || exec tmux new-session && exit;}
bashrcファイルで操作を実行できます。この行は、tmux を切り離すか終了すると ssh を終了し、接続を終了します。接続を終了するキーストロークを保存するので、この設定は気に入っています。しかし、これが気に入らず(私の考えではそうではない)、終了後もログインシェルに残りたい場合は、そのexit
部分を削除するだけです。
[ -z "$TMUX" ] && { tmux attach || exec tmux new-session;}
また、接続するtmuxセッションがないと接続が閉じられるため、tmux attach
改行文字を使用しないでください。exec
答え4
正常に使用しました
case $- in *i*)
[ -z "$TMUX" ] && exec tmux
esac
私の.zshrc
。 Bashを使用している場合は、これを.bashrc
Bashに入れます。
tmux
また、これをデフォルトのシェル()に設定しようとしましたが、chsh -s $(which tmux)
SSHを介した直接コマンドの実行が中断されるようです。たとえば、ssh $some_server echo foo
出力は生成されません。