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 후에는 fishyes PPIDbashno 를 실행합니다 ssh.

관련 정보