非ログインシェル用のシステム全体 ${PATH}(Debian)

非ログインシェル用のシステム全体 ${PATH}(Debian)

似たような質問が上がってきましたが、問題がまだ存在していると思います。

私は標準的な作業を行い、ディレクトリにソフトウェアを追加しました/opt/。行こう、行こう/opt/goホームディレクトリで、/opt/go/binバイナリがある場所です。

$PATH質問:システム全体に拡張する方法ログインしていませんシェル。ユーザーがログインして端末アイコンをクリックすると、非ログインシェルが起動します。この時点で、ユーザーはPATHGoバイナリを含める必要があります。

私は試した:

  • /etc/profile.d/ログインしていないシェルはそれを読むことができないため、機能しません。
  • /etc/environment.d変数が利用できないためPATH="${PATH}:/opt/go/bin"動作しません。また、より多くのルートを追加します。ルートはどう違いますかPATH
  • /etc/login.defsユーザーが LDAP にあるか、他の理由で読み取られません。

奇妙なまたは不器用な解決策は部分的に効果的かもしれません。

  • たとえば、 sheel.rcグローバルファイルを修正しますbash.bashrcが、少しバグがあり、更新は保存されません。カタログは.d/*これらの問題を解決する良い方法です。そして殻がたくさんあります。
  • 以前に他の場所で値を設定していないコレクションで使用するには/etc/environment.d/: 。ルートはどう違いますか?PATHPATHPATH=/usr/local/bin:/usr/bin:...PATH
  • にシンボリックリンクバイナリがありますが、/usr/local/bin何十ものバイナリがある場合、これは楽しいことではありません。

ついに、唯一の効果的な方法:

  • ディレクトリを使用してください/etc/X11/Xsession.d/。ディレクトリに配置する同じファイルを追加し、/etc/profile.d/GUIPATH環境に合わせて正しく設定しました。そしてTTYと衝突しません/etc/profile.d/

もともと問題がまだ存在していると書いた理由は何ですか?/etc/X11/Xsession.d/そうするには変なところのようですからね。実際にこれを行うより良い/正しい方法はありませんか?管理者がユーザーのためにシステムの範囲を設定するのは一般的なことですPATH。 :) それともここに明確な解決策がないのでしょうか?


カミールに感謝の気持ちを伝えます

関連情報