web-dev-qa-db-ja.com

デスクトップ環境の$ PATH環境変数は、シェルのそれとは異なりますか?

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にありません。しかし、私はまだgnomeunityでQtCreatorを起動できます。

freedesktop-exec-variables から気づいた

フルパスが指定されていない場合、実行可能ファイルはデスクトップ環境で使用される$ PATH環境変数で検索されます。

質問

デスクトップ環境の$ PATH環境変数は、シェルとは異なりますか?

もしそうなら、デスクトップ環境の$ PATH変数を含む設定ファイルはどこにありますか?

新しいバージョンのQtCreatorをインストールしてから、デスクトップでQtCreatorを起動すると、qtcreator:qtcreator.desktopファイルを変更せずに新しいバージョンを参照していることがわかります。 qtの道には何かあると思いますか?

デスクトップ環境:gnome

OS:ubuntu16.04

編集

私が遭遇した実際の問題は$ PATHに関するものではありませんでした(私の答えを参照してください)。 Gillesの答えは、実際には「デスクトップ環境の$ PATH環境変数はシェルの環境変数とは異なりますか?」に対する答えです。だから、誰かが私と同じ疑いを持っている場合に備えて、私はそれを受け入れました。

1
Charles

デスクトップ環境の$ PATH環境変数は、シェルとは異なりますか?

そうかも知れない。

プログラムがファイルから環境変数を読み取るために邪魔にならない限り、プログラムの環境はファイルから取得されません。各プロセスは、その親の環境を継承します。ファイルから環境変数を読み取ることは、ログイン時に実行するプログラム(テキストモードでログインするときのシェル、セッションマネージャー、またはグラフィカル環境でログインするときにそのように動作するプログラム)のジョブの一部です。したがって、通常、デスクトップ環境を使用してターミナルでシェルを開くと、そのシェルの環境はデスクトップ環境と同じになります。

ただし、実際にはそうではない場合があります。これは、環境変数の定義を.bashrcに入れるように人々に指示するアドバイスがWeb上にたくさんあるためです。 これは悪い考えです これらの環境変数は、ターミナルから開始するのではなく、GUIから直接開始するプログラムでは使用できないことを意味します。しかし、それを行った場合、デスクトップ環境や端末から起動されていないプログラムとは異なる環境変数が端末にあることに気付くかもしれません。

環境変数の定義を~/.profileに入れることは、ほとんどのシステムで機能します。 Waylandをアクティブにしない限り、Ubuntu 16.04のGnomeで機能すると思います(ログイン設定を含む多くの問題が発生し、常に回復する方法が提供されるとは限りません)。

いずれにせよ、環境変数を間違った場所に置くことの通常の症状は、環境変数が端末には存在するが、デスクトップ環境には存在しないことです。逆にするには、シェルの起動ファイルに何か異常なものが含まれている必要があります。

qtcreatorは、シェルの変数$ PATHにありません。

それがインストールされている場合、私はそれを非常に疑っています。 Ubuntuは、ほとんどのプログラムが配置されている/usr/binqtcreatorを出荷します。

ただし、$PATH.desktopファイルの場所とは関係がないことに注意してください。 $PATHはアプリケーションプログラム用であり、.desktopファイル用ではありません。 qtcreator.desktopファイルを探していて、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へのシンボリックリンクを作成します(このディレクトリがない場合)。存在する場合は作成します)。 Ubuntuのデフォルトの.profileは、~/binの前に$PATHを追加します。

$XDG_DATA_DIRSファイルの検索パスは*.desktopだけではないことがわかりました。そのため、間違ったQtCreatorデスクトップエントリファイルを見つけました。

XDGベースディレクトリ仕様 を参照してください

ユーザー固有のデータファイルを書き込むための相対的な単一のベースディレクトリがあります。このディレクトリは、環境変数$ 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の古いバージョンと新しいバージョンの両方をソースからインストールしました。 Qtディレクトリの下にInstallationLog.txtがあります。デスクトップファイルを~/.local/shareにコピーするアクションはそこに文書化されています。

0
Charles