문제

화면을 사용하여 작업 세션을 지속하고 여러 기계에서 동일한 세션에 연결합니다. 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에 의해 설정)을 잡고 쉘 용으로 업데이트 할 수 있습니다.

다른 팁

외국 프로세스에서 환경 변수를 변경하는 "사소한"방법은 없습니다.

간단한 솔루션은 귀하를 지속하는 것일 수 있습니다 XDISPLAY 로그인시 파일에 a PROMPT_COMMAND 다음 프롬프트를 인쇄하기 전에이 파일을 읽으려면


X 애플리케이션을 주변으로 이동하려면 같은 것을 살펴 봅니다 X11vnc 또는 Xvnc.

나는 또한 이것에 대한 답에 관심이 있습니다. 시간별로 정렬 된 사용자의 SSH 프로세스를 나열하고 해당 프로세스의 환경을 고양 할 수 없습니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top