새 셸 세션 이 생성되면 이 변수가 그에 따라 설정됩니다( , 등이 DISPLAY
될 수 있음 ). 실수로 변수를 망친 경우 일반적으로 해당 변수를 기본값(설정에 따라 변경됨)으로 재설정하고 싶습니다.:0
:1
localhost:0
DISPLAY
내 질문은 프로그래밍 방식으로 (bash 스크립트를 통해) DISPLAY
변수를 어떻게 얻을 수 있는지입니다.새로운 쉘을 생성할 때와 마찬가지로?
다른 질문/답변에는 일반적으로 하드코딩 export DISPLAY=0:0
이나 이와 유사한 내용이 포함되어 있습니다. 이는 제가 원하는 것이 아닙니다(올바른 DISPLAY
변수가 다를 수 있으므로).
나는 순진하게 노력했다
bash -c 'echo $DISPLAY'
서브쉘이 현재 쉘 변수를 상속하기 때문에 작동하지 않습니다
답변1
당신은 그것을 확인할 수 있습니다 /proc/${pid}/environ
. 여기에는 프로세스의 초기 환경이 포함됩니다.
여기에 $$
실행 중인 쉘의 pid가 있습니다. 또한 변수는 0자로 구분됩니다. 옵션을 사용 -e
하면 cat
인쇄할 수 없는 문자(예: nil 문자)를 인쇄하고 sed
nil 문자 표현을 개행으로 변환합니다.
$ cat -e "/proc/$$/environ" | sed 's/\^@/\n/g' | grep DISPLAY
DISPLAY=:0.0
$ export DISPLAY=broken
$ cat -e "/proc/$$/environ" | sed 's/\^@/\n/g' | grep DISPLAY
DISPLAY=:0.0
답변2
올바른 결과를 얻을 수 있는 한 가지 방법 은 다음에 할당된 변수를 DISPLAY
쿼리하는 것입니다 .DISPLAY
gnome-terminal-server
cat /proc/$(pidof "gnome-terminal-server")/environ | tr '\0' '\n' | grep ^DISPLAY=