web-dev-qa-db-ja.com

.bashrcが自動的に初期化されませんか?

新しいターミナルを開くときは、source ~/.bashrc変数を初期化する前にsource ~./bash_profileまたは$PATHを実行する必要があります。 .bashrcはこれを自動的に行ったと思いましたか?どうすればそれを行う必要がないようにできますか。

1
user733420

私はあなたの質問を理解しているかどうかわかりませんが:

Bashinitファイルは起動時にソース化する必要があります。そうでない場合は、システムの構成が不適切であるか、壊れています。

オペレーティングシステムについては触れていませんが、Linuxを使用していると思います。

man bashによる初期化の順序は次のとおりです。

Bashがインタラクティブログインシェルとして、または--loginオプションを指定した非インタラクティブシェルとして呼び出されると、最初にファイルからコマンドを読み取って実行します/ etc/profile、そのファイルが存在する場合。そのファイルを読み取った後、〜/ .bash_profile〜/ .bash_login〜/ .profileの順に検索し、存在し、読み取り可能な最初のコマンドからコマンドを読み取って実行します。 --noprofileオプションは、シェルの起動時にこの動作を禁止するために使用できます。
ログインシェルではないインタラクティブシェルが開始されると、bashは/ etc/bash.bashrcおよび〜 /.bashrc、これらのファイルが存在する場合。これは、-norcオプションを使用することで禁止できます。 --rcfile fileオプションは、/ etc/bash.bashrcおよび〜/ .bashrcの代わりに、bashにファイルからコマンドを読み取って実行するように強制します。

たとえば、Ubuntuディストリビューションでは、/etc/profileをロードした後、次のような~/.profileファイルを探します。

if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
    . "$HOME/.bashrc"
    fi
fi

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

つまり、bashを使用していて、ファイル~/.bashrcが存在する場合、それはロード/ソースされ、その後、$ PATH変数が設定されます。

したがって、最初に~/.profileファイルを確認し、必要に応じて修正することをお勧めします。