2008-10-29 4 views
9

화면을 사용하여 작업 세션을 지속하고 여러 시스템에서 동일한 세션에 연결합니다. XDISPLAY 변수 안에 내 영구 화면 세션이 항상 현재 연결중인 컴퓨터로 설정되도록 SSH 및 화면을 어떻게 설정할 수 있습니까?SSH, screen 및 XDISPLAY

즉. 나는 직장에서 스크린 세션을 시작하고 내 작업 컴퓨터에서 실행중인 X 서버를 사용하는 gvim을 사용합니다. 나중에 나는 집에서 같은 세션에 연결하고 gvim을 사용하기를 원한다. 그러나 이번에는 gvim이 가정용 컴퓨터에서 X 서버를 사용하기를 원합니다. 다른 컴퓨터에서 연결할 때마다 XDISPLAY를 수동으로 업데이트 할 수 있다는 것을 알았지 만 자동 시스템이 필요합니다.

내가 실제로 gvim을 내 작업 컴퓨터에서 내 집 컴퓨터로 옮길 수 있다면 보너스 포인트가 실행 중입니다. 나는 xmove을 시도했지만 좋은 플레이를 결코 얻을 수 없었다.

답변

5

다음 수동 솔루션입니다,하지만 당신은 원격으로 로그인 할 때 자동적으로 수행 한하는 당신이 별칭 또는 스크립트를 사용할 수없는 이유가 없습니다.

해당 지역의 쉘이 DISPLAY 변수를 설정한다고 가정 적절하게는 screen -X을 사용하여 연결 전에 원격지 화면에 다음 commads를 보낼 수 있습니다.

# 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" #... 

모든 창문이 쉘 (안 실행 편집기 또는 일부 등), 당신은 키 바인딩보다는 XDISPLAY을 변경 :at를 사용할 수에 남아있는 것을 알고있는 경우 :

# update the XDISPLAY in all current windows 
% screen -X "at % stuff export XDISPLAY=$DISPLAY\015" #... 

또는 부모 프로세스의 환경 변수 값을 얻는 방법을 알고 있다면 쉘의 프롬프트 훅과 함께이를 사용하여 setenv에 의해 설정된 SCREEN 값인 XDISPLAY를 가져 와서 쉘에 대해 업데이트 할 수 있습니다.

0

나는 또한 이것에 대한 대답에 관심이있다. 시간에 따라 분류 된 사용자의 SSH 프로세스를 나열 할 수 없어야하고 그 프로세스의 환경을 고양이가 어쩌면 말해야합니까?

3

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

간단한 해결책은 XDISPLAY을 로그인 할 때 파일에 저장하고 PROMPT_COMMAND을 사용하여 다음 프롬프트를 인쇄하기 전에이 파일을 읽는 것일 수 있습니다. X11vnc 또는 Xvnc 같은 것을 봐 주위에 X 응용 프로그램을 이동에 대한


.