qtcreator용 파일을 찾으려고 해서 .desktop
다음과 같이 썼습니다.
$ for p in ${XDG_DATA_DIRS//:/ }; do
grep -rni 'qtcreator' $p;
done
가장 관련성이 높은 줄은 다음과 같습니다.
/usr/share/app-install/desktop/qtcreator-plugin-ubuntu:ubuntusdk.desktop:2:X-AppInstall-Package=qtcreator-plugin-ubuntu
/usr/share/app-install/desktop/qtcreator-plugin-ubuntu:ubuntusdk.desktop:6:Exec=qtcreator %F
/usr/share/app-install/desktop/qtcreator-plugin-ubuntu:ubuntusdk.desktop:7:Icon=ubuntu-qtcreator
/usr/share/app-install/desktop/qtcreator:qtcreator.desktop:2:X-AppInstall-Package=qtcreator
/usr/share/app-install/desktop/qtcreator:qtcreator.desktop:6:Exec=qtcreator %F
/usr/share/app-install/desktop/qtcreator:qtcreator.desktop:7:Icon=QtProject-qtcreator
/usr/share/app-install/desktop/qhimdtransfer:qhimdtransfer.desktop:12:#Icon=qtcreator_logo_32
나는 이것이 qtcreator:qtcreator.desktop
QtCreator의 데스크톱 항목인 줄 알고 열어서 다음을 발견했습니다.
[Desktop Entry]
X-AppInstall-Package=qtcreator
X-AppInstall-Popcon=292
X-AppInstall-Section=universe
Exec=qtcreator %F
Icon=QtProject-qtcreator
Type=Application
Terminal=false
Name=Qt Creator
GenericName=Integrated Development Environment
MimeType=text/x-c++src;text/x-c++hdr;text/x-xsrc;application/x-designer;application/vnd.nokia.qt.qmakeprofile;application/vnd.nokia.xml.qt.resource;
Categories=Qt;Development;IDE;
InitialPreference=9
X-Ubuntu-Gettext-Domain=app-install-data
qtcreator가 쉘 변수 $PATH에 없습니다.. 하지만 여전히 gnome Unity에서 QtCreator를 시작할 수 있습니다.
~에서freedesktop-exec-변수나는 알아차렸다
전체 경로가 제공되지 않으면 데스크톱 환경에서 사용하는 $PATH 환경 변수에서 실행 파일을 찾습니다.
질문
데스크탑 환경의 $PATH 환경 변수가 셸의 환경 변수와 다릅니까?
그렇다면 데스크탑 환경에 대한 $PATH 변수를 포함하는 구성 파일은 어디에 있습니까?
최신 버전의 QtCreator를 설치한 다음 데스크탑에서 QtCreator를 실행했는데 파일을 변경하지 않고 최신 버전을 참조하는 것으로 나타났습니다 qtcreator:qtcreator.desktop
. Qt의 경로에 문제가 있는 것 같은데요?
데스크탑 환경: 그놈
운영 체제: ubuntu16.04
편집하다
내가 겪고 있는 실제 문제는 $PATH와 관련이 없습니다(내 답변 참조). Gilles의 대답은 실제로 "데스크톱 환경의 $PATH 환경 변수가 셸의 환경 변수와 다릅니까?"에 대한 대답입니다. 그래서 저와 같은 질문을 하는 분이 계실까 봐 받아들였습니다.
답변1
데스크탑 환경의 $PATH 환경 변수가 셸의 환경 변수와 다릅니까?
아마도 그렇습니다.
프로그램이 특별히 파일에서 환경 변수를 읽지 않는 한 프로그램의 환경은 파일에서 가져오지 않습니다. 각 프로세스는 상위 프로세스의 환경을 상속합니다. 파일에서 환경 변수를 읽는 것은 로그인 시 실행되는 프로그램(텍스트 모드로 로그인할 때의 쉘, 세션 관리자 또는 그래픽 환경에 로그인할 때와 같이 작동하는 프로그램) 작업의 일부입니다. 따라서 일반적으로 데스크톱 환경을 사용하고 터미널에서 셸을 열면 해당 셸은 데스크톱 환경과 동일한 환경을 갖게 됩니다.
그러나 실제로는 그렇지 않을 수도 있습니다. 온라인에는 환경 변수 정의를 .bashrc
.이건 나쁜 생각이야이는 터미널이 아닌 GUI에서 직접 실행되는 프로그램에서는 이러한 환경 변수를 사용할 수 없음을 의미하기 때문입니다. 하지만 그렇게 하면 터미널의 환경 변수가 데스크톱 환경 및 터미널에서 실행되지 않는 프로그램의 환경 변수와 다르다는 것을 알 수 있습니다.
환경 변수 정의를 입력하면 ~/.profile
대부분의 시스템에서 작동합니다. Wayland를 활성화하지 않는 한 Ubuntu 16.04의 Gnome에서 작동한다고 생각합니다 (로그인 설정을 포함하여 많은 항목이 손상되고 항상 복구 방법을 제공하지는 않습니다).
그럼에도 불구하고 환경 변수를 잘못된 위치에 배치하는 일반적인 증상은 환경 변수가 터미널에는 있지만 데스크톱 환경에는 없다는 것입니다. 그 반대인 경우 쉘 시작 파일에 뭔가 이상한 점이 있는 것입니다.
qtcreator는 쉘의 변수 $PATH에 없습니다.
설치가 되었는지 의심스럽습니다. Ubuntu가 출시될 qtcreator
때 /usr/bin
대부분의 프로그램이 위치한 곳입니다 .
그러나 이는 $PATH
파일의 위치와는 아무런 관련이 없습니다 .desktop
. 파일 $PATH
용이 아니라 응용프로그램용입니다 .desktop
. .desktop
파일을 찾고 있고 패키지가 설치되어 qtcreator
있는 경우 다음을 수행할 수 있습니다.qtcreator
파일 검색:
$ locate qtcreator.desktop
/usr/share/applications/qtcreator.desktop
/usr/share/applications
파일의 표준 위치입니다 .desktop
.
Ubuntu의 버전 외에 자신의 QtCreator 버전을 설치한 경우 qtcreator
명령 검색 경로에 있는지 확인해야 합니다. 즉, $PATH
시스템 전체에 설치한 경우 /usr/local/bin/qtcreator
다음의 검색 경로에서와 같이 사용할 수 있도록 해야 합니다. 이전 명령을 사용 /usr/bin
하면 시스템 버전이 아닌 버전을 먼저 가져옵니다. 계정에 설치한 경우 qtcreator
실행 파일이 있는 위치 ~/bin/qtcreator
, 즉 bin
홈 디렉터리 아래의 디렉터리에서 심볼릭 링크를 만듭니다(없으면 만듭니다). 우분투는 기본적으로 .profile
추가 ~/bin
됩니다 $PATH
.
답변2
이것이 파일에 대한 유일한 검색 경로 $XDG_DATA_DIRS
는 아니라는 것이 밝혀졌습니다 . *.desktop
그래서 잘못된 QtCreator 데스크톱 항목 파일을 찾았습니다.
사용자별 데이터 파일이 기록되는 기본 디렉터리가 있습니다. 이 디렉토리는 환경 변수 $XDG_DATA_HOME에 의해 정의됩니다.
$XDG_DATA_HOME은 사용자별 데이터 파일이 저장되어야 하는 상대 기본 디렉터리를 정의합니다. $XDG_DATA_HOME이 설정되지 않았거나 비어 있는 경우 $HOME/.local/share와 동일한 기본값을 사용해야 합니다.
$XDG_DATA_DIRS 데이터 파일을 검색하는 데 사용되는 기본 디렉터리의 우선순위 집합을 정의합니다.$XDG_DATA_HOME 기본 디렉터리 외에. $XDG_DATA_DIRS의 디렉터리는 콜론 ":"으로 구분해야 합니다.
실제 QtCreator 데스크톱 항목 파일을 찾았습니다 ~/.local/share/application/DigiaQt-qtcreator-community.desktop
.
Exec 라인이라 Exec=/home/user/Qt/Tools/QtCreator/bin/qtcreator
큰 문제는 없습니다 $PATH
.
소스에서 QtCreator의 이전 버전과 새 버전을 모두 설치했습니다. InstallationLog.txt
Qt 디렉토리에 하나가 있습니다. 데스크톱 파일을 복사하는 방법은 ~/.local/share
여기에 설명되어 있습니다.