실행 파일이 실패하는 대신 sudo로 실행될 때 프로그래밍 방식으로 DISPLAY를 설정하는 방법이 있습니까?

실행 파일이 실패하는 대신 sudo로 실행될 때 프로그래밍 방식으로 DISPLAY를 설정하는 방법이 있습니까?

Linux(Ubuntu)에서 sudo 명령을 사용하여 터미널에서 GUI 애플리케이션을 실행하면 아래와 같이 QT 오류와 함께 애플리케이션이 실패합니다.

sudo에서의 QT 애플리케이션

시도하면 거의 모든 앱이 실패합니다. 다음은 Firefox의 예입니다.

파이어폭스 sudo

sudo/root에는 기본적으로 DISPLAY가 없으므로 다음을 참조할 수 있습니다.루트가 아닌 다른 사용자로 GUI 응용 프로그램 실행

애플리케이션이 표시되지 않는 것을 인식하고 프로그래밍 방식으로 설정할 수 있습니까?

답변1

넌 그냥 sudo말해야 해앞으로루트로 생성되는 프로세스에 기존 환경 변수를 추가합니다. --preserve-env=list의 옵션을 참조하십시오 man sudo.

또한 firefox질문 없이 루트로 실행하세요. 매우 엄격합니다.

아니, 그러지 마세요.

이 방법으로 해결하려는 문제가 무엇이든 브라우저를 루트로 실행할 이유가 전혀 없습니다.~ 해야 하다이 문제는 다양한 방법으로 해결될 수 있습니다.

cmake및 에도 마찬가지입니다 cmake-gui. 소프트웨어를 루트로 빌드하면 안 됩니다. 루트로 빌드해야 한다면 뭔가 잘못된 것입니다. 당신이가지다소프트웨어를 루트로 빌드하려면(꼭 그럴 필요는 없지만 일부 소프트웨어는 제대로 작성되지 않음)원하지 않는다cmake루트로 실행 해야 합니다 cmake-gui.

따라서 sudo의 나쁜 사용 사례입니다.

관련 정보