리눅스를 가정데스크탑 환경시스템이 설치되었습니다. 부팅하고 자격 증명을 입력할 때 무슨 일이 있어도데스크탑 환경부팅 후 기본 데스크탑 환경을 고려합니다. 사용자는 KDE 또는 XFCE와 같은 다른 데스크탑 환경을 선택할 수 있지만 이것이 기본 환경은 아닙니다. 기본 데스크탑 환경 또는 더 나아가 마지막으로 사용된 DE를 찾기 위한 배포판에 구애받지 않는 코드 조각은 무엇입니까? 코드는 원격 SSH 세션 또는 CTRL-ALT-F2 텍스트 전용 콘솔에서 실행되어야 합니다.
이 질문의 원동력은 제가 최근 nvidia-bug-report.sh의 출력을 NVIDIA에 이메일로 보냈기 때문입니다. 며칠 후 NVIDIA 기술 지원팀은 "어떤 OS?", "GNOME 또는 KDE?", "어떤 배포판?"이라는 질문에 응답했습니다. 모든 메타데이터는 자체 스크립트를 통해 자동으로 수집되고 분류될 수 있습니다.
데스크탑 환경이 충돌했기 때문에 nvidia-bug-report.sh는 CTRL-ALT-F2 텍스트 콘솔이나 원격 SSH 세션에서 실행해야 합니다. 분명히 그들 중 누구도 $DESKTOP_SESSION 변수를 가지고 있지 않습니다. 답변은 와 유사한 목록에서 신뢰도 순으로 하나 이상의 항목을 반환합니다 "gnome|kde|mate|cinnamon|lx|xfce|jwm|none"
.
"와 같은 것을 원합니다. 간단한 쉘 스크립트에서 배포 이름과 버전 번호를 어떻게 얻을 수 있습니까? "
답변1
확실한 솔루션이 제공되지 않으면 다음 스니펫이 도움이 될 수 있습니다.
$ w | awk -vdp=$DISPLAY '($2 ~ dp){gsub(/.*\//, "");print $NF}'
아니면:
$ qdbus | grep -oPm1 '(kdm|xfce|gnome)'
pstree를 사용하는 또 다른 방법:
$ pstree -H $(pidof X) | grep -oP '(kdm|xfce|gnome)(?=.*?X)'
kdm
그리고 하나 더:
$ lsof ~/.xsession-errors | grep -oEm1 '(kde|xfce|gnome)'
kde
또는 변형:
$ lsof ~/.xsession-errors | awk 'NR==2{print $1;quit}'
startkde