特定のグローバルパラメータの設定方法の決定

特定のグローバルパラメータの設定方法の決定

重複の可能性:
環境変数のソースを確認する方法

特定の構成が存在するファイルの場所を確認する方法があるかどうか疑問に思います。たとえば、グローバルパラメータがあることを知って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
       #....

関連情報