SSH Bash 연결을 종료할 때 왜 두 번 종료해야 합니까? [폐쇄]

SSH Bash 연결을 종료할 때 왜 두 번 종료해야 합니까? [폐쇄]

SSH를 통해 연결할 때 로컬 시스템의 셸로 돌아가기 전에 시스템을 두 번 종료해야 합니다. 이런 일이 발생하는 이유가 있습니까? 이렇게 되어서는 안 됩니다.

답변1

시작한 쉘 위에 새로운 대화형 쉘을 시작하면 이런 일이 발생할 수 있습니다 ssh. 예를 들어 셸( screen예: tmux) 또는 .bash~/.bash_profilebash/etc

거기에서 시작하거나 screen거기 tmux에서 시작하면 다른 프로세스가 실행되는 동안 초기 셸의 시작이 일시적으로 "중단"됩니다. screen또는 를 종료하면 tmux초기 쉘 세션에서 새 프롬프트가 표시되며 별도로 종료해야 합니다.

이 문제를 해결하려면 screenor tmux대신 exec screenor를 사용하세요 exec tmux. 이것은바꾸다현재 쉘에는 적절한 프로세스가 있습니다.

이렇게 하면 호출 후에 추가 설정이 필요하지 않은지 확인하십시오. exec이 호출은 시작 스크립트에 제어권을 반환하지 않습니다(실행 중에 오류가 발생하지 않는 한 exec).

다음은 로그인 시 시작하기 위한 내 ~/.profile파일(사용하지 않음 ) bash의 예 입니다.tmux

if [ -z "$TMUX" ] && [ -z "$DISPLAY" ]; then
    if tmux has-session; then
        exec tmux attach-session
    else
        exec tmux
    fi
fi

tmux이는 쉘 세션이 tmux세션에서 아직 실행되고 있지 않은 경우( TMUX그렇다면 설정), 그래픽 환경에 있지 않은 경우( DISPLAY그렇다면 설정) 현재 쉘을 대체합니다. tmux세션이 있으면 연결하고, 그렇지 않으면 새 세션을 시작하세요 .

관련 정보