실행 중인 X 서버가 없다고 프로그램을 속이는 방법

실행 중인 X 서버가 없다고 프로그램을 속이는 방법

텍스트 UI와 GUI를 모두 사용하여 실행할 수 있는 이 프로그램이 있습니다.

둘 중 하나를 강제하는 명령줄 스위치가 없습니다. 대신 X에 있는지 자동으로 감지하는 것 같습니다. 예를 들어 가상 터미널에서 실행하면 텍스트 모드로 들어가고 터미널 에뮬레이터에서 실행하면 텍스트 모드로 전환됩니다. , 별도의 그래픽 창이 열립니다).

강제로 텍스트 모드로 전환하고 X 터미널 내에서 실행하고 싶습니다. 어떻게 해야 하나요?

답변1

보통 그냥

unset DISPLAY

터미널의 명령줄에서. 일부 응용 프로그램은 이보다 더 똑똑하며 실제로 콘솔과 의사 터미널에서 권한과 유형을 확인합니다.

답변2

단일 명령에 대해 X를 비활성화하려면 다음과 같이 작성할 수 있습니다.

DISPLAY= ./my_command

다음에 나오는 전략적 공백에 유의하십시오 =. 보다 일반적으로 <variable>=<value>는 공백으로 구분된 일련의 접두사를 명령 앞에 추가하여 프로세스의 환경 변수를 설정할 수 있습니다 . 공백은 구분 기호 역할을 하므로 =바로 뒤에 공백이 있으면 이전 변수가 지워집니다. 서브쉘을 명령으로 사용한 다음 해당 환경을 인쇄하여 이러한 접두사의 효과를 확인할 수 있습니다. 예를 들어:

$ A=a B=b C= D=d sh
$ echo $A $B $C $D

이것은 인쇄됩니다

a b d

이는 서브쉘의 환경이 실제로 예상과 다르다는 것을 보여줍니다. 개별 인수가 에 전달되기 전에 쉘 대체가 발생합니다 echo. 즉, 호출은 세 개의 인수로 이루어지므로 echo명령줄(앞에 두 개의 공백이 있어도 단일 공백만 인쇄함)과 마찬가지로 출력에서 ​​와 출력 사이에 공백이 하나만 있을 것입니다. (두 개의 공백을 인쇄함)와 동일합니다. and 사이에 공백이 있습니다.bdecho a b ddecho a b "" dbd

관련 정보