CentOS 7で非ログインシェルのPATHを設定するにはどうすればよいですか?
具体的には、/usr/local/texlive/2016/bin/x86_64-linux
にバイナリが必要なsystemdユニットがあります。
/etc/environment
でPATH=/usr/local/texlive/2016/bin/x86_64-linux:$PATH
を使用して設定しようとしましたが、PATHは/usr/local/texlive/2016/bin/x86_64-linux:$PATH:/usr/local/sbin:/usr/sbin
でした。
/etc/profile.d/texlive.sh
をexport PATH="/usr/local/texlive/2016/bin/x86_64-linux:${PATH}"
で作成しましたが、これはログインシェルでのみ機能しました。
私は Set Path for all Users(Login and Non-login Shells) を見ましたが、解決策はすでに上で試されました。
私は すべてのユーザーの非ログインシェルとdebianのログインシェルのシステム$ PATHにパスを追加する方法 を確認しましたが、承認された解決策がなく、変更するかどうか確信がありません/etc/login.defs
アップデートで変更される可能性があるため。
最も簡単な答えは、systemd UnitファイルのPATH
コマンドの一部としてExecStart
を設定することです。たとえば、現在
ExecStart=/bin/mycmd arg1 arg2
次にそれを
ExecStart=/bin/bash -c 'PATH=/new/path:$PATH exec /bin/mycmd arg1 arg2'
$PATH
の拡張は、systemdではなくbashによって行われます。 systemdがEnvironment=PATH=/new/path:$PATH
を展開しないため、$PATH
を使用するなどの代替手段は機能しません。