重複の可能性:
環境変数のソースを確認する方法
特定の構成が存在するファイルの場所を確認する方法があるかどうか疑問に思います。たとえば、グローバルパラメータがあることを知ってTMOUT
これを変更したいのですが、そのパラメータがどこに設定されているのかわかりません。わかりましたこれここにこのような質問がありましたが、命令に基づいて変数が現れる順序を調べるほか、他の方法があるか知りたいですenv
。
答え1
このコマンドは実行に時間がかかりますが(システム内のすべてのファイルを確認するため)、ファイルを見つける必要があります。
find / -type f -print0 | xargs -0 grep -w 'TMOUT=' /dev/null
別のアプローチは、シェルがログインシェルでないときに設定されるか(env -i bash
)、設定されるか(env -i bash --login
)など、どのような状況で設定されるかを調べることです。 、またはなど$HOME
のファイルを手動でチェックインできます。環境変数を指定するファイルもあり、そのうちの1つで設定できます。.profile
.env
.bashrc
.bash_profile
/etc/
ログインシェルがある場合は、kshシェル自体によって設定されていることがksh
わかります。$TMOUT
編集する:上記のコマンドラインのあまり明確ではない機能の一部を説明するには、次の手順を実行します。
このイディオムはfind ... -print0 | xargs -0 ...
非常に一般的です。-print0
デフォルト値の代わりに使用する主な点-print
は、-print0
実際の改行文字を含むファイル名が正しく表示されることです。-0
オプションを渡すことは同じ規則を理解するxargs
ことです。xargs
/dev/null
最初の引数として渡す一般的な慣行grep
も説明する価値があります。を読み取るとファイルの終わりだけが取得されるため、/dev/null
空でない文字列と一致しませんgrep
。したがって、ファイルはクリックされません。xargs
最後のgrepが実行されたときに検索するファイルが1つだけ残っている状況を正しく処理するには、grepコマンドラインにそれを指定するだけです。 grepにファイル引数のみがある場合は、コマンドラインを指定せずに一致を一覧表示します。このように:
~/tmp/t$ echo hello > a
~/tmp/t$ echo hi > b
~/tmp/t$ grep '^h.*' a
hello
~/tmp/t$ grep '^h.*' a b
a:hello
b:hi
答え2
これはあなたの質問に対する正確な答えではありませんが、いくつかの答えになるかもしれません。
StackOverflow:Linux:環境変数はどこに保存されますか?
編集する:
シェルスクリプトをデバッグするときは、通常 -x を追加します。#!/bin/bash -x
シェルで実行することもできます。bash -x
# su - test
test$ bash -x
unset a r
+ . /etc/bash_completion.d/yast2-completion.sh
**(file sourced)**
++ YAST=/sbin/yast
++ YAST_MODLIST=()
**(variables set from file)**
#....
++ /usr/bin/dircolors -b /etc/DIR_COLORS
+ eval 'LS_COLORS='\''no=00
#....