SSH를 통해 연결할 때 로컬 시스템의 셸로 돌아가기 전에 시스템을 두 번 종료해야 합니다. 이런 일이 발생하는 이유가 있습니까? 이렇게 되어서는 안 됩니다.
답변1
시작한 쉘 위에 새로운 대화형 쉘을 시작하면 이런 일이 발생할 수 있습니다 ssh
. 예를 들어 셸( screen
예: tmux
) 또는 .bash
~/.bash_profile
bash
/etc
거기에서 시작하거나 screen
거기 tmux
에서 시작하면 다른 프로세스가 실행되는 동안 초기 셸의 시작이 일시적으로 "중단"됩니다. screen
또는 를 종료하면 tmux
초기 쉘 세션에서 새 프롬프트가 표시되며 별도로 종료해야 합니다.
이 문제를 해결하려면 screen
or tmux
대신 exec screen
or를 사용하세요 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
세션이 있으면 연결하고, 그렇지 않으면 새 세션을 시작하세요 .