GNU/Linux >> Linux の 問題 >  >> Linux

手動で開始しない限り、Bash は .bashrc を読み取らない

.bash_profile に以下があることを確認してください:

# .bash_profile

# If .bash_profile exists, bash doesn't read .profile
if [[ -f ~/.profile ]]; then
  . ~/.profile
fi

# If the shell is interactive and .bashrc exists, get the aliases and functions
if [[ $- == *i* && -f ~/.bashrc ]]; then
    . ~/.bashrc
fi

なぜそれがソースになるのですか?あなたは真の bash を実行していません :

$ echo $SHELL
/bin/sh

最新のシステムでは sh 基本シェルへのシンボリックリンクです。たとえば、私の Debian では:

$ ls -l /bin/sh 
lrwxrwxrwx 1 root root 4 Aug  1  2012 /bin/sh -> dash

あなたの場合、 sh bash へのリンクです しかし、 man bash で説明されているように :

<ブロック引用>

bash が sh という名前で呼び出されると、POSIX 標準にも準拠しながら、sh の歴史的なバージョンの起動動作を可能な限り模倣しようとします。 [...] sh という名前で対話型シェルとして呼び出されると、bash は変数 ENV を探し、定義されている場合はその値を展開し、展開された値をファイルの名前として使用して読み取り、実行します。 sh として呼び出されたシェルは、他の起動ファイルからコマンドを読み取ったり実行したりしようとはしません 、 --rcfile オプションは効果がありません。

そして

<ブロック引用>

--norc
シェルがインタラクティブな場合は、システム全体の初期化ファイル /etc/bash.bashrc および個人用初期化ファイル ~/.bashrc を読み取って実行しないでください。 シェルが sh として呼び出される場合、このオプションはデフォルトでオンになっています。

デフォルトのシェルは sh なので、 、 .bashrc 読まれません。 chsh -s /bin/bash を使用して、デフォルトのシェルを bash に設定するだけです .


Linux
  1. .bashrcの目的とそれはどのように機能しますか?

  2. `$ _`の意味を理解しますか?

  3. cronシェルを変更する方法(shからBash)?

  1. シェル変数の関数?

  2. 実行する前にシェルスクリプト全体を読む方法は?

  3. 現在のシェルから.bashrcを再生成しますか?

  1. Zshの使用を開始する

  2. [ :シェル プログラミングの予期しない演算子

  3. シェルスクリプト、メッセージをエコーし​​た後に同じ行で読む