環境変数のソースを確認するには?

環境変数のソースを確認するには?

しばらく前に設定したLinuxインスタンスがあります。起動してログインするときにrootいくつかの環境変数を設定しましたが、その変数がどこから来たのか覚えていないか、見つかりませんでした。

  • ~/.bash_profile/etc/.bash_rcすべての起動スクリプトを確認しました。
  • 私は無駄findに走ったgrep

きっとどこかを見るのを忘れてしまったようです。この問題を解決する方法はありますか?

ベストアンサー1

zshログインシェルの場合:

zsh -xl

そしてbash

PS4='+$BASH_SOURCE> ' BASH_XTRACEFD=7 bash -xl 7>&2

これはログインシェルをエミュレートし、完了したすべての操作(リダイレクトされたstderrを使用する領域を除くzsh)と現在解釈されているファイル名を表示します。

したがって、すべきことは、その出力で環境変数の名前を見つけることです。 (このscriptコマンドを使用すると、シェルセッション全体の出力を保存できます。またはこのbash方法では、出力を端末の代わりに端末に保存する7> file.logために使用できます。)7>&2xtracefile.log

変数がないと、シェルは起動時にそれを継承する可能性があるため、以前にPAM構成で設定されていたか、~/.ssh/environmentX11セッションの開始時に読み取られた内容(~/.xinitrc、、~/.xsession)、またはログインマネージャを起動したサービス定義に設定されています。サーバーより早く起動スクリプトがあります。それではfind /etc -type f -exec grep -Fw THE_VAR {} +役に立ちます。

おすすめ記事