Gnome 3.22はデフォルトでウェイランドを使用します。 WaylandのGnomeは~/.profile
(~/.bash_profile
または)を読みません/etc/profile
。バラよりhttps://bugzilla.gnome.org/show_bug.cgi?id=736660。
私の初期化ファイルは次のように設定されます。
.bash_profile
ソース以外は何もしません.profile
。.bashrc
.profile
次の環境変数を設定しますPATH
。LC_MESSAGES
.bashrc
.less
grep
(ウェイランド前)効果は次のとおりです。
- グラフィカルにログインすると
.profile
、などの環境変数を読み、設定します。端末エミュレータでbashを開くと読み込まれます。PATH
LC_MESSAGES
.bashrc
- 仮想端末からログインすると読み込ま
.bash_profile
れます。.profile
.bashrc
- SSH を使用してログインすると、動作は仮想端末と同じです。
すべての場合に.profile
私の.bashrc
環境を読み、設定しました。
gnome 3.22はwaylandを使用し、waylandは読みません.profile
。上記の効果を取り戻すには、初期化ファイルをどのように設定する必要がありますか?
私は特定のファイル(たとえば、私が望むのは私の.profile
環境を合理的に設定することです。これは、bash固有の設定をbash initファイルに保存し、他の設定を別のinitファイルに保存したいという意味です。やりたくありません。
私はアーチLinuxを使用しています。すべてのディストリビューションの回答を歓迎します。解決策を提案する際の副作用、長所、短所を説明してください。
.profile
2017年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.env
startup_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
同意します。これが最もエレガントな解決策ではありませんが、私がテストした限りの作業は完了したようです。