我试图找到.desktop
qtcreator 的文件,所以我写了这个:
$ 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 不在 shell 的变量 $PATH 中。但我仍然可以在 gnome unity 中启动 QtCreator。
从我注意到的freedesktop-exec-variables
如果未提供完整路径,则在桌面环境使用的 $PATH 环境变量中查找可执行文件。
问题
桌面环境的 $PATH 环境变量与 shell 不同吗?
如果是这样,包含桌面环境的 $PATH 变量的配置文件在哪里?
qtcreator:qtcreator.desktop
我安装了较新版本的 QtCreator,然后在桌面中启动 QtCreator,并在不更改文件的情况下找出它对较新版本的引用。我认为与qt的路径有关吗?
桌面环境:gnome
操作系统:ubuntu16.04
编辑
我遇到的实际问题与 $PATH 无关(请参阅我的回答)。Gilles 的答案实际上是“桌面环境的 $PATH 环境变量与 shell 中的环境变量是否不同?”的答案。所以我接受了它,以防有人和我有同样的疑问。
可能是。
程序的环境不是来自文件,除非程序不遗余力地从文件中读取环境变量。每个进程都继承其父进程的环境。从文件中读取环境变量是您在登录时运行的程序工作的一部分(以文本模式登录时的 shell、会话管理器或在图形环境中登录时充当此类行为的程序)。因此,通常,如果您使用桌面环境并在终端中打开一个 shell,该 shell 将具有与桌面环境相同的环境。
但是,在实践中,情况可能并非如此,因为网络上有大量建议告诉人们将环境变量定义放入
.bashrc
. 这是一个坏主意,因为这意味着这些环境变量不适用于直接从 GUI 启动的程序,而不是从终端启动的程序。但是,如果您这样做了,您可能会发现终端中的环境变量与桌面环境和未从终端启动的程序中的环境变量相比有所不同。~/.profile
在大多数系统上都可以使用环境变量定义。我认为它适用于 Ubuntu 16.04 上的 Gnome,只要您不激活 Wayland(这会破坏很多东西,包括登录设置,并且并不总是提供恢复方法)。在任何情况下,将环境变量放在错误位置的常见症状是环境变量存在于终端中,但在桌面环境中缺失。反过来,你的 shell 启动文件中必须有一些不寻常的东西。
我非常怀疑它是否已安装。Ubuntu
qtcreator
是/usr/bin
大多数程序所在的地方。但请注意,
$PATH
这与文件的位置无关.desktop
。$PATH
是针对应用程序的,而不是针对.desktop
文件的。如果您正在寻找 的.desktop
文件qtcreator
,并且您已经安装了该qtcreator
软件包,则只需搜索该文件:/usr/share/applications
是.desktop
文件的标准位置。如果您在 Ubuntu 中安装了自己的 QtCreator 版本,那么您应该确保它
qtcreator
位于命令搜索路径中,即$PATH
. 如果您在系统范围内安装它,您应该将它作为 提供/usr/local/bin/qtcreator
,它位于之前的命令搜索路径中/usr/bin
,因此您将获得您的版本,而不是系统版本。如果您将它安装在您的帐户上,请从qtcreator
可执行文件所在的位置创建一个符号链接~/bin/qtcreator
,即到bin
您的主目录下的目录(如果此目录不存在,请创建它)。Ubuntu 的默认.profile
添加~/bin
到$PATH
.事实证明,这
$XDG_DATA_DIRS
不是*.desktop
文件的唯一搜索路径。所以我找到了错误的QtCreator桌面入口文件。请参阅XDG 基本目录规范
我找到了真正的 QtCreator 桌面入口文件
~/.local/share/application/DigiaQt-qtcreator-community.desktop
。Exec 行是
Exec=/home/user/Qt/Tools/QtCreator/bin/qtcreator
,所以问题不在于$PATH
。我从源代码安装了旧版本和新版本的 QtCreator。
InstallationLog.txt
Qt 目录下有一个。将桌面文件复制到的~/.local/share
操作记录在那里。