SSH経由でリモートサーバーに接続するときにFish Shellでtmuxを自動的に起動する方法

SSH経由でリモートサーバーに接続するときにFish Shellでtmuxを自動的に起動する方法

bashシェルからシェルに切り替えましたfish。私はそれが好きで、私のサーバーでも使用することにしました。tmux接続したら自動的に起動するにはssh?フォローするこれbashコマンドですfishが、シェルとは異なり、この方法は基本的な書き換えなしでは機能しません。

答え1

台本を書き直しました。最も要求の厳しい部分は、内部が機能しないため、sshシャットダウンして接続を切断することです。fishexit./.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ここ-ADtmux コマンドで使用される理由を理解するには、確認してください。ここ

ポリスチレン許容される回答を明確にするために、Fishは通常ログインシェルに設定されていません。したがって、sshの後はfishyesPPIDbashnoを実行しますssh

関連情報