bash
シェルからシェルに切り替えましたfish
。私はそれが好きで、私のサーバーでも使用することにしました。tmux
接続したら自動的に起動するにはssh
?フォローするこれbashコマンドですfish
が、シェルとは異なり、この方法は基本的な書き換えなしでは機能しません。
答え1
台本を書き直しました。最も要求の厳しい部分は、内部が機能しないため、ssh
シャットダウンして接続を切断することです。fish
exit
./.config/fish/config.fish
tmux
の親がある場合にのみfish
始まりますssh
。
これは私のファイルの一部です./.config/fish/config.fish
。
if status --is-login
set PPID (echo (ps --pid %self -o ppid --no-headers) | xargs)
if ps --pid $PPID | grep ssh
tmux has-session -t remote; and tmux attach-session -t remote; or tmux new-session -s remote; and kill %self
echo "tmux failed to start; using plain fish shell"
end
end
私の他の質問でより読みやすいバージョンを見つけることができます。 (ありがとうございます。言葉にならない魚、「Fish Shell」の著者):Fish Shellでブール値を使用する方法は?
答え2
スクリーン部分、自動起動機能を提供するtmuxベースの端末マルチプレクサです。
答え3
次の場所に.fishファイルを作成します.config/fish/conf.d
。
if status --is-interactive
echo server is interactive
if set -q SSH_CONNECTION[1]; and set -q SSH_CLIENT[1]; and set -q SSH_TTY[1]; or pstree -p | grep "sshd.*\($fish_pid\)"; and not set -q TMUX
tmux new -AD -t remote -s remote
end
end
ローカルマシンにもtmuxセッションがある場合は、++を使用してリモートCTRLセッションから分離する必要があります。詳しくはB CTRLB Dここ。-AD
tmux コマンドで使用される理由を理解するには、確認してください。ここ。
ポリスチレン許容される回答を明確にするために、Fishは通常ログインシェルに設定されていません。したがって、sshの後はfish
yesPPID
とbash
noを実行しますssh
。