bashrc : X 창이 사용 가능한지 아는 방법?


10

내에 ~/.bashrc$ EDITOR를 gvim으로 설정 하는 부분 이 있습니다. X 창에있을 때 제대로 작동합니다. 그러나 다른 워크 스테이션에서 내 워크 스테이션으로 ssh를 실행하면 gvim이 "디스플레이를 열 수 없습니다"라는 불평을 시작합니다.

따라서 ifX 윈도우를 사용할 수 있으면 gvim을 사용하고 그렇지 않으면 vim으로 설정하십시오.

어떻게하면 될까요?

답변:


11

이를 수행하는 한 가지 방법은 DISPLAY 환경 변수가 있는지 테스트합니다.

if [ "$DISPLAY" ]
then
    EDITOR=gvim
else
    EDITOR=vim
fi

경우에 따라 gvim이 X 서버에 접속할 수 없더라도 DISPLAY가 설정됩니다. 이러한 경우 RunningX 프로그램을 사용하십시오 .

if RunningX
then
    EDITOR=gvim
else
    EDITOR=vim
fi

if [[ $DISPLAY ]]에 대한 이중 브라켓 애호가 ...
서지 Stroobandt

7

$DISPLAY당신은 디스플레이에 연결되어 있지 않은 경우 환경 변수는 사용자가 X에있는 경우 뭔가 설정하고 해제해야합니다.

그래서 이것을 사용할 수 있습니다 :

if [ -n "$DISPLAY" ]; then
    alias vim='gvim'
else
    alias vim='vim'
fi

그러나 다른 해결책이 있습니다. 이것을 ssh X 전달이라고합니다.

운영

ssh -X yourworkstation

그런 다음 ssh'd 시스템에서 vim을 실행할 수 있으며 X를 실행중인 시스템에 vim이 표시됩니다.


3

이것을 .bashrc에 넣으십시오.

if [ -z "${DISPLAY:-}" ]; then
  EDITOR='vim'
else
  EDITOR='gvim'
fi

1

이것은 귀하의 질문에 대한 답변이 아니지만 X *를 실행하는 하나의 워크 스테이션에서 다른 워크 스테이션으로 sshing하는 경우 ssh로 X 전달을 설정 하면 실제로 gvim 사용할 있다고 지적하는 것이 유용하다고 생각했습니다 . 창 정보는 네트워크를 통해 전송되며 gvim은 로컬에서 실행되는 것처럼 팝업됩니다.

~ / .ssh / config에 다음을 추가하십시오.

Host *
   ForwardX11 yes 

이제 gvim을 실행할 수 있습니다.

원래 워크 스테이션이 Windows이고 X를 실행하지 않는 경우 실제로 Cygwin을 사용하여 X 서버를 로컬로 시작할 수 있습니다. 설정이 완료되면 PuTTy와 같은 인기있는 ssh 클라이언트가 X11 포워딩을 수행하도록 구성하면 gvim이 기본 창 장식 창으로 나타납니다.


0

Xorg가 시작시 설정 한 환경 변수 중 하나를 확인하십시오 (예 : 현재 X11 세션에 대한 정보가 포함 된 XLOCAL).


0

나는 좋지 않지만 비어 있지 않은 DISPLAY 변수에 대해 현명하기 때문에 RunningX를 사용하는 garyjohn의 대답을 좋아했습니다.

하지만 .. 더 잘 가고 싶습니다. 나는 종종 스크린 세션을 사용합니다. 집에서 스크린 세션을 시작할 수 있으며 DISPLAY가 정의되어 있습니다. 그런 다음 다른 곳에서 ssh를 입력하면 DISPLAY가 여전히 정의되어 있으며 실제로 집에 표시됩니다! 그럼 .. 'export $ DISPLAY ='를하겠습니다. 이것은 괜찮지 만 그 대답이 이미 확인되었으므로 .bashrc가 처음 실행될 때 유효한 DISPLAY 변수를 찾았습니다. EDITOR는 여전히 gvim으로 설정됩니다.

나는 비슷한 문제에 대한 해결책을 찾기 위해 여기에 왔으며 X-GUI 맨 페이지 탐색에 yelp를 사용하고 싶었지만 X를 사용하지 않을 때 자동으로 전통적인 man 명령으로 드롭 다운했습니다.

man () {
    if RunningX
    then
        yelp "man:$@";
    else
        /usr/bin/man "$@";
    fi
}

EDITOR 문제의 경우 다음과 같은 작업을 수행 할 수 있다고 생각합니다.

EDITOR=vim
vim () {
    if RunningX
    then
        gvim "$@";
    else
        vim "$@";
    fi
}

나는 긴 이야기없이 방금 게시했지만 테스트하지는 않았습니다. 나는 나 자신을 bash 초보자라고 생각한다. 나는 'man command'를 테스트했는데 작동합니다! 나는 편집자를 위해 emacs를 사용하고 있으며, X에 대한 자체 검사를 수행합니다. 심지어 gvim도 설치하지 않았습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.