문제
화면을 사용하여 작업 세션을 지속하고 여러 기계에서 동일한 세션에 연결합니다. XDISPlay 변수가되도록 SSH 및 스크린을 설정하려면 어떻게해야합니까? 내부에 내 지속적인 화면 세션은 항상 현재 연결중인 컴퓨터로 설정되어 있습니까?
즉. 직장에서 화면 세션을 시작하고 작업 시스템에서 실행되는 X 서버를 사용하는 GVIM을 사용합니다. 나중에 집에서 같은 세션에 연결하고 GVIM을 사용하고 싶습니다. 그러나 이번에는 GVIM이 홈 머신에서 X 서버를 사용하기를 원합니다. 다른 시스템에서 연결할 때마다 XDISPlay를 수동으로 업데이트 할 수 있지만 자동화 된 시스템을 사용하고 싶습니다.
내가 실제로 할 수 있다면 보너스 포인트 이동하다 내 작업 기계에서 실행 중에 홈 머신까지 GVIM. 나는 시도했다 xmove 그러나 결코 좋은 플레이를 할 수 없었습니다.
해결책
다음은 수동 솔루션이지만 원격으로 로그인 할 때 별명이나 스크립트를 사용하여 자동으로 수행 할 수없는 이유는 없습니다.
로컬 쉘이 디스플레이 변수를 적절하게 설정한다고 가정하면 사용할 수 있습니다. screen -X
연결하기 전에 다음 커뮤니케이션을 원격 화면으로 보냅니다.
# set future remote shells started by screen to have the correct XDISPLAY
% screen -X "setenv XDISPLAY $DISPLAY" #...
# set up the keystroke F1 to update the XDISPLAY in current shells
% screen -X "bindkey -k k1 stuff export XDISPLAY=$DISPLAY\015" #...
모든 창문이 쉘에 남겨 졌다는 것을 알고 있다면 (러닝 편집기 나 그와 같은 것이 아님) :at
변경하려면 XDISPLAY
주요 바인딩 대신 :
# update the XDISPLAY in all current windows
% screen -X "at % stuff export XDISPLAY=$DISPLAY\015" #...
또는 상위 프로세스의 환경 변수 값을 잡는 방법을 알고 있다면 쉘의 프롬프트 후크와 함께 화면의 XDISPLAY 값 (SETENV에 의해 설정)을 잡고 쉘 용으로 업데이트 할 수 있습니다.