グローバルに変数を定義する方法

グローバルに変数を定義する方法

私はManjaroでシステムサービスとして設定しましたssh-agent(次の指示に従って)。ここ)。サービス自体に加えて、SSH_AUTH_SOCK環境変数をに設定する必要があります${XDG_RUNTIME_DIR}/ssh-agent.socket。上記のガイドラインには、それを入れるか、.zshrcそれに対応するものが記載されています。 ssh-agentを使用する必要がある場合は主にコマンドラインを使用するため、これはほとんどのアプリケーションに適しています。

ただし、VSCodeがdmenuで起動すると実行されないため、環境変数を.zshrc継承しません。$SSH_AUTH_SOCKしたがって、これを機能させるには、この変数をグローバルに設定する必要があります。見ているアーチスウィキ、(私が見ることができる)唯一の方法はを通してですpam_env。しかし、これは私にとってはうまくいきません。

SSH_AUTH_SOCK         DEFAULT=${XDG_RUNTIME_DIR}/ssh-agent.socket

しかし、/etc/environmentVSCodeはprocess.envまだ変数を定義しません。私も試しました

SSH_AUTH_SOCK           DEFAULT=/run/user/1000/ssh-agent.socket 

しかし、まだ設定されていません。

これは明らかに環境問題です。シェル.zshrcでVSCode(ランタイム)を実行するのと同じように、次の$SSH_AUTH_SOCKような問題があります。ここに報告してくださいしかし、実際には解決策はありません。

ベストアンサー1

解決策:

次に追加/etc/security/pam_env.conf:

SSH_AUTH_SOCK  DEFAULT=${XDG_RUNTIME_DIR}/ssh-agent.socket

その他の有用な情報:

なぜ最初は機能しなかったのですか/etc/environment:

/etc/environment~/.pam_environmentまたは とは異なる形式に従います/etc/security/pam_env.confここに文書化されているように:

/etc/environment:

VARIABLE=value

~/.pam_environmentそして/etc/security/pam_env.conf

VARIABLE [DEFAULT=value] [OVERRIDE=value]

だからフォーマットが間違っています。

なぜ/etc/security/pam_env.conf他の2つの代わりにそれを使用するのですか?:

なぜなら、それが現在と未来にも完全に有効な唯一の選択だからです。

/etc/environment環境変数を読みませんので、${XDG_RUNTIME_DIR}何の効果もありません。の内容はハードコードできますが、$XDG_RUNTIME_DIR変数(およびそのディレクトリ)は次のように表示されます。pam_systemdユーザーごとに動的に。したがって、信頼できるオプションではありません。

~/.pam_environment同じことはうまくいきます/etc/security/pam_env.confが、「廃止され、今後の時点で削除される予定です」(犯罪)。したがって、将来的にも使用できるように使用しないでください。

ちょうど去った/etc/security/pam_env.conf。現在動作しており、${XDG_RUNTIME_DIR}使用されなくなりました。

おすすめ記事