
iTerm2를 사용하는데 screen: ssh -t [username]@[domain].edu 'screen -DR'을 사용할 때 깨달았습니다.
나는 다음과 같은 변덕을 발견했습니다.
iTerm2 창에서 마우스를 사용하여 위아래로 스크롤할 수 없습니다.
Ctrl-A를 사용하여 줄의 시작 부분으로 이동할 수 없습니다
ctrl-e를 사용하여 줄 끝으로 이동할 수 없습니다.
내 ~/.bash_profile이 소스가 아닙니다.
다른 것도 있을 거라 확신하지만 스크린 세션 없이 방금 SSH에 접속한 것처럼 동작하게 하려면 어떻게 해야 합니까?
답변1
언급한 키보드 단축키는 Bash 쉘에 의해 구현됩니다. 작동하지 않으면 어떤 이유로 Bash를 셸로 사용하지 않는다는 의미일 수 있습니다. 하지만 Screen이 SSH가 수행하는 것과 다른 셸을 시작한다는 것은 약간 이상합니다.
~/.screenrc
파일에 "shell" 또는 "defshell" 명령이 있는지 확인하세요 .getent passwd $USER
마지막 필드에서 보고된 쉘이 /bin/bash인지 확인하십시오 .printenv SHELL
(외부 화면)이 보고된 내용과 일치하는지 확인하세요getent
.
일부 시스템에서는 실제 로그인 셸이 이상한 것으로 설정되어 있으면 screenrc 설정과 함께 bash를 사용하도록 Screen에 수동으로 지시해야 할 수도 있습니다 shell bash
. (예를 들어 서버에 실제로 사용자 계정의 셸로 /bin/sh가 있지만 sh의 ~/.profile이 맨 위에서 /bin/bash를 시작하도록 구성되었을 수 있습니다. 이 경우 'sh' 셸이 시작되었습니다. by Screen은 ~/.profile을 읽지 않으며 bash로 이동하지 않습니다.)
귀하의 ~/.bash_profile은 "로그인" 쉘이 아닌 소스로 제공되지 않습니다. 시작한 외부 셸 화면~에서"로그인" 쉘이었습니다. Screen 내의 항목은 일반적으로 로그인이 아니며 ~/.bashrc만 로드하고 "프로필" 스크립트는 로드하지 않을 것으로 예상됩니다. 이는 각각의 새 Screen 창이 초기 셸에서 이미 시작된 항목을 불필요하게 시작하는 것을 방지하기 위한 것입니다.
별칭이나 함수 같은 것을 대신 넣어야 ~/.bashrc
하지만, screenrc의 "셸" 설정을 사용하면 해당 명령에 , 예를 -
들어 -bash
.
표준 터미널 기반 스크롤링은 Screen 또는 tmux와 같은 멀티플렉서에서 작동하지 않으며 이는 부분적으로 설계에 따른 것입니다. 멀티플렉서는 자체 터미널 에뮬레이터이며 텍스트가 많지 않은 보다 직접적인 방식으로 외부 터미널을 구동합니다.밖으로 스크롤그대로지워지고 덮어씌워졌습니다.
예를 들어, Screen 세션에 가로로 분할된 두 개의 창이 있는 경우, 보기 밖으로 스크롤하려고 할 때 아래쪽 창의 텍스트를 명시적으로 지워야 합니다. 그렇지 않으면 위쪽 창에 쓰레기가 남게 됩니다. (Screen 세션에 세로로 분할된 두 개의 창이 있는 경우 스크롤백은 어떻게 작동합니까?)
이로 인해 Screen은 일반적으로 외부 터미널을 의도적으로 "대체 화면" 모드로 전환하여 해당 기간 동안 iTerm2의 스크롤백을 비활성화하도록 구성됩니다. altscreen off
이런 일이 발생하는 것을 방지하기 위해 screenrc의 설정을 사용해 볼 수 있지만 iTerm의 스크롤백이 그다지 의미가 있을 것이라고는 기대하지 마십시오.
이 작업을 수행하는 대신 Ctrl-a[특정 창을 스크롤할 수 있도록 를 사용하여 Screen의 "복사 모드"로 들어갈 수 있습니다.