답변:
보통은
unset DISPLAY
터미널의 명령 줄에서. 일부 응용 프로그램은 그보다 더 똑똑하며 실제로 콘솔과 의사 터미널의 권한과 유형을 확인합니다.
DISPLAY=invalid:0
?
env
서브 쉘 대신 명령을 실행할 수 있습니다 .env -u DISPLAY emacs foo.c
emacs
에는 X 사용을 비활성화하는 명령 줄 플래그가 있습니다 emacs -nw
. 그냥 입력하십시오 . 그러나 그렇지 않은 경우 대신을 사용할 수 DISPLAY= emacs
있습니다.
DISPLAY=0.0.0.0:0
이름 서버 조회를 수행하지 않고 즉시 실패합니다.
단일 명령에 대해 X를 비활성화하려면 다음을 쓸 수 있습니다.
DISPLAY= ./my_command
이후 전략적 빈 공간에 주목하십시오 =
. 보다 일반적으로, 명령 <variable>=<value>
에 공백 으로 구분 된 시퀀스를 접두어로 추가하여 프로세스의 환경 변수를 설정할 수 있습니다. 공백은 분리 자로 사용되므로 =
바로 뒤에 공백이 선행 변수를 지 웁니다. 서브 쉘을 명령으로 사용하고 환경을 인쇄하여 이러한 접 두부의 효과를 볼 수 있습니다. 예를 들어 보자.
$ A=a B=b C= D=d sh
$ echo $A $B $C $D
이것은 인쇄됩니다
a b d
이것은 서브 쉘의 환경이 실제로 의도 한 것과 다르다는 것을 보여준다. 개별 인수가에 전달되기 전에 쉘 대체가 발생 echo
하므로 명령 행이 두 개의 공백 이있는 것처럼 출력 사이 b
와 공백에 단일 공백 만 있습니다.d
echo a b d
DISPLAY=:0
설정이 해제되어 있다고 가정 합니다. 다른 사용자로 실행하고 iptables를 사용하여 루프백 X11을 삭제하면 문제를 해결할 수 있다고 생각합니다.