首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >桌面环境的$PATH环境变量与shell中的环境不同吗?

桌面环境的$PATH环境变量与shell中的环境不同吗?
EN

Unix & Linux用户
提问于 2018-07-01 00:36:00
回答 2查看 1.9K关注 0票数 1

我正试图为so创建者找到.desktop文件,所以我写了以下内容:

代码语言:javascript
复制
$ for p in ${XDG_DATA_DIRS//:/ }; do
    grep -rni 'qtcreator' $p;
done

以下是最相关的台词:

代码语言:javascript
复制
/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的桌面条目,所以我打开它并找出:

代码语言:javascript
复制
[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的方式发布QtCreator。

freedesktop-exec-变量上我注意到

如果没有提供完整路径,则在桌面环境使用的$PATH环境变量中查找可执行文件。

问题

桌面环境的$PATH环境变量与shell环境不同吗?

如果是,包含桌面环境的$PATH变量的配置文件在哪里?

我安装了一个较新版本的QtCreator,然后在桌面上启动QtCreator,并在不更改qtcreator:qtcreator.desktop文件的情况下找到它对较新版本的引用。我认为qt的道路有什么关系吗?

桌面环境: gnome

操作系统: ubuntu16.04

<#>编辑

我遇到的实际问题不是关于$PATH(见我的答案打击)。吉尔斯的答案实际上是“桌面环境中的$PATH环境变量与shell中的环境变量不同吗?”所以我接受了,以防有人和我有同样的疑问。

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2018-07-01 08:14:13

桌面环境的$PATH环境变量与shell环境不同吗?

也许是吧。

程序的环境不是来自一个文件,除非程序用自己的方式从文件中读取环境变量。每个进程继承其父进程的环境。从文件中读取环境变量是登录时运行的程序(登录文本模式时的shell、会话管理器或在登录图形环境时充当此角色的程序)的一部分。因此,通常情况下,如果您使用桌面环境并在终端中打开一个shell,该shell将具有与桌面环境相同的环境。

然而,在实践中,情况可能并非如此,因为网络上有大量的建议告诉人们在.bashrc中放置环境变量定义。馊主意,因为这意味着这些环境变量不适用于直接从GUI启动的程序,而不是从终端启动的程序。但是如果您这样做了,您可能会发现,与桌面环境和非从终端启动的程序相比,终端中有不同的环境变量。

将环境变量定义放入~/.profile中可以在大多数系统上工作。我认为它适用于Ubuntu16.04上的Gnome,只要你不激活Wayland (它破坏了很多东西,包括登录设置,而且并不总是提供恢复的方法)。

在任何情况下,将环境变量放置在错误位置的常见症状是,环境变量存在于终端中,但在桌面环境中缺失。相反,您的shell启动文件中必须有一些不寻常的内容。

is创建者不在shell的变量$PATH中。

我很怀疑它是否安装好了。Ubuntu在/usr/bin中提供D8,这是大多数程序所处的位置。

但是请注意,$PATH.desktop文件的位置无关。$PATH用于应用程序,而不是.desktop文件。如果您正在寻找用于.desktopqtcreator文件,并且安装了qtcreator包,则只需使用搜索文件

代码语言:javascript
复制
$ 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目录(如果这个目录不存在,就创建它)。Ubuntu的默认.profile~/bin添加到$PATH前面。

票数 2
EN

Unix & Linux用户

发布于 2018-07-01 07:11:22

事实证明,$XDG_DATA_DIRS不是*.desktop文件的唯一搜索路径。所以我找到了错误的QtCreator桌面条目文件。

XDG基础目录规范

应该写入特定于用户的数据文件,其中有一个单独的基本目录。此目录由环境变量$XDG_DATA_HOME定义。$XDG_DATA_HOME定义了应该存储用户特定数据文件的基本目录。如果$XDG_DATA_HOME未设置或为空,则应使用等于$HOME/..local/share的默认设置。$XDG_DATA_DIRS定义了按优先顺序排列的基本目录集,以搜索数据文件,in添加到$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的旧版本和更新版本。Qt目录下有一个InstallationLog.txt。这里记录了将桌面文件复制到~/.local/share的操作。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/452842

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档