기본 DISPLAY 변수를 얻는 방법은 무엇입니까?

기본 DISPLAY 변수를 얻는 방법은 무엇입니까?

새 셸 세션 이 생성되면 이 변수가 그에 따라 설정됩니다( , 등이 DISPLAY될 수 있음 ). 실수로 변수를 망친 경우 일반적으로 해당 변수를 기본값(설정에 따라 변경됨)으로 재설정하고 싶습니다.:0:1localhost:0DISPLAY

내 질문은 프로그래밍 방식으로 (bash 스크립트를 통해) DISPLAY변수를 어떻게 얻을 수 있는지입니다.새로운 쉘을 생성할 때와 마찬가지로?

다른 질문/답변에는 일반적으로 하드코딩 export DISPLAY=0:0이나 이와 유사한 내용이 포함되어 있습니다. 이는 제가 원하는 것이 아닙니다(올바른 DISPLAY변수가 다를 수 있으므로).

나는 순진하게 노력했다

bash -c 'echo $DISPLAY'

서브쉘이 현재 쉘 변수를 상속하기 때문에 작동하지 않습니다

답변1

당신은 그것을 확인할 수 있습니다 /proc/${pid}/environ. 여기에는 프로세스의 초기 환경이 포함됩니다.

여기에 $$실행 중인 쉘의 pid가 있습니다. 또한 변수는 0자로 구분됩니다. 옵션을 사용 -e하면 cat인쇄할 수 없는 문자(예: nil 문자)를 인쇄하고 sednil 문자 표현을 개행으로 변환합니다.

$ 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쿼리하는 것입니다 .DISPLAYgnome-terminal-server

cat /proc/$(pidof "gnome-terminal-server")/environ | tr '\0' '\n' | grep ^DISPLAY=

관련 정보