Waylandのgnomeと仮想端末(またはSSH)のbashの環境変数の設定

Waylandのgnomeと仮想端末(またはSSH)のbashの環境変数の設定

Gnome 3.22はデフォルトでウェイランドを使用します。 WaylandのGnomeは~/.profile~/.bash_profileまたは)を読みません/etc/profile。バラよりhttps://bugzilla.gnome.org/show_bug.cgi?id=736660

私の初期化ファイルは次のように設定されます。

  • .bash_profileソース以外は何もしません.profile.bashrc
  • .profile次の環境変数を設定しますPATHLC_MESSAGES
  • .bashrc.lessgrep

(ウェイランド前)効果は次のとおりです。

  • グラフィカルにログインすると.profile、などの環境変数を読み、設定します。端末エミュレータでbashを開くと読み込まれます。PATHLC_MESSAGES.bashrc
  • 仮想端末からログインすると読み込ま.bash_profileれます。.profile.bashrc
  • SSH を使用してログインすると、動作は仮想端末と同じです。

すべての場合に.profile私の.bashrc環境を読み、設定しました。

gnome 3.22はwaylandを使用し、waylandは読みません.profile。上記の効果を取り戻すには、初期化ファイルをどのように設定する必要がありますか?

私は特定のファイル(たとえば、私が望むのは私の.profile環境を合理的に設定することです。これは、bash固有の設定をbash initファイルに保存し、他の設定を別のinitファイルに保存したいという意味です。やりたくありません。

私はアーチLinuxを使用しています。すべてのディストリビューションの回答を歓迎します。解決策を提案する際の副作用、長所、短所を説明してください。


.profile2017年11月の更新:人々がログイン後にログインシェルプロファイル(bashの場合.bash_profile)をインポートしたいことをGNOME開発者が認めたことを知っています。テキストまたはグラフィックログイン。したがって、上記のユースケースは再び機能します。

GNOME開発者はまだログインシェルを実行しないことを望んでいます。彼らの方向はsystemdで環境を使用するようです。

https://in.waw.pl/~zbyszek/blog/environmentd.html

すべてのログイン方法に慣れるのに時間がかかるようです。

答え1

Systemdバージョン233(2017年3月)~/.config/environment.d/*.confには。マニュアルenvironment.dページそしてこのトピックにつながる議論今回の予備宣伝はそしてこの最後のもの

答え2

まったく同じ問題に使用した解決策は次のとおりです。

ステップ1

ソーススクリプトを生成~/.profileし、スクリプトを実行可能にします。ただそう呼んでください/path/to/startup.sh。次のように見えます。

#!/bin/bash
. ~/.profile

ステップ2

スクリプトを実行するデスクトップアプリケーションを作成します。これを行うには、.desktopファイルを作成する必要があります~/.local/share/applications(または/usr/share/applicationsすべてのユーザーが使用できるようにするには)。ただそう呼んでください~/.local/share/applications/startup.desktop。次のように見えます。

[Desktop Entry]
Name=Startup
Keywords=startup
Exec=/path/to/startup.sh
Type=Application

.desktopファイルの詳細については、次を参照してください。ここ

ステップ3

ログアウトしてください。再登録してください。これで、アプリメニューからアプリを検索できます。

ステップ4

このアプリケーションを起動アプリケーションとして設定します。これを行うには、Gnome Tweak Toolを使用し、[アプリケーションの起動]タブのリストに私のアプリケーションを追加しました。

それだけです!ログインするたびに以前の機能を復元する必要があります。また、ファイル構造はそのまま維持されるため、Waylandのバグが修正された場合は、スタートアップアプリケーションリストからそのアプリケーションを削除し、両方のファイルを削除すると、すべてが正常に戻ります。

後で修正

startup.sh@Gussがコメントで指摘したように、この回避策は独自のシェルで実行されるため、環境変数はエクスポートされません。だから私たちには別の解決策が必要です。

次から読むGNOMEドキュメントいくつかのオプションがあることがわかります。私ができる唯一のことは、ファイルを作成し、/usr/share/gdm/env.d/そのファイルにエクスポートしたい変数を入れることだけです。ただし、これはすべてのユーザーに対して変数をエクスポートすることを意味するので、最終的に行ったことは次のとおりです。

2 人のユーザーがいるとしましょう。そして出撃。各ファイルのファイルを作成し、それをsum/usr/share/gdm/env.d/と呼びます。このファイルには、新しいGNOMEセッションの開始時にエクスポートされる環境変数があります。startup_john.envstartup_sally.env

$ cat startup_john.env
VAR=1
$ cat startup_sally.env
VAR=2

この時点の問題は、両方のユーザーに対して両方のファイルがロードされることです。この問題を解決するために、各ファイルの権限をその所有者だけがコンテンツを読み取ることができるように設定しました。

$ ls -l startup_john.env
-rw-r-----. 1 john john 4 Dec 27 15:17 startup_john.env
$ ls -l startup_sally.env
-rw-r-----. 1 sally sally 4 Dec 27 15:16 startup_sally.env

同意します。これが最もエレガントな解決策ではありませんが、私がテストした限りの作業は完了したようです。

関連情報