bash 変数はどこで定義されますか?

bash 変数はどこで定義されますか?

bash 変数が定義されているファイルを見つけるにはどうすればよいでしょうか?

echoコマンドが次のように表示されると仮定します

$ echo $DB_ROOT
/home/mahmood/db-4.0

さて、この変数が定義されているファイルをどうやって見つければよいでしょうか? 定義していないと言わざるを得ません~/.bashrc

答え1

数多くの場所でできた定義される。

詳しい説明については、bashの下にあるマニュアルページを参照する必要がありますINVOCATIONが、すべてを理解するまでにはおそらく頭が痛くなるだろうと警告しておきます :-)

シェルの呼び出し方法と存在するファイルに応じて、次の 1 つ以上の場合があります。

  • /etc/profile
  • /etc/bash.bashrc
  • ~/.bash_profile
  • ~/.bash_login
  • ~/.profile
  • ~/.bashrc
  • オプションで指定されたもの--rcfile
  • 環境変数で指定されたものBASH_ENV
  • 環境変数で指定されたものENV
  • 前のファイルから呼び出される任意のファイル。

参考までに、私は通常、~/.bash_profile(セットの最高優先度であるため{~/.bash_profile, ~/.bash_login, ~/.profile}、)があることを確認します。初め(そのグループ内で見つかったもの)

最後に、それがあること~/.bashrcと、それがソースであることを確認します。~/.bash_profile

こうすることで、~/.bash_profileログインシェルに必要なものだけを保持し~/.bashrcシェル。後者が「累積的な」コマンド(パスの末尾に何かを追加するなど)を保持していないことを確認する必要があります。

他にも設定方法はありますが、特に異なるシェルを使用していて、それらの間でプロファイルを共有する必要がある場合は、上記のスキームがbash-only 設定で私が見つけた最も簡単な方法です。

関連情報