Bash は手動で起動しない限り .bashrc を読みません。

Bash は手動で起動しない限り .bashrc を読みません。

bash端末で手動で実行しない限り、対話型端末からソースを取得しません.bashrcbash

$ bash

または手動でインポートしてください。

$ source ./.bashrc

または以下を実行してください。

$ st -e bash

これが有用な結果になることを願っています。

$ echo $TERM
st-256color

$ echo $SHELL
/bin/sh

$ readlink /bin/sh
bash

$ shopt login_shell
login_shell     off

私はCRUX Linux 3.0を使用していdwmますst。私は試してみましたが、成功しませんでした.bash_profile.profile

どんなアイデアがありますか?

答え1

.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

答え2

なぜ発生しますか?デフォルトのシェルはbashではありませんが、次のようになりますsh

$ echo $SHELL
/bin/sh

ほとんどの最新システムでは、shこれは基本シェルへのシンボリックリンクです。私のDebianを例に挙げてみましょう。

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

あなたの場合は、以下に説明するようにBUTへshのリンクです。bashman bash

bash が sh 名で呼び出されると、POSIX 標準に準拠しながら、sh の以前のバージョンの起動動作をできるだけ近い模倣しようとします。 [...] shというインタラクティブシェルとして呼び出されると、bashは変数ENVを探し、その値が定義されている場合は展開し、拡張値を読み取り、実行するファイル名として使用します。 ~からshで呼び出されたシェルは、他の起動ファイルからコマンドを読み取って実行しようとしません。, --rcfile オプションが無効です。

そして

--norc
シェルが対話型の場合は、システム全体の初期化ファイル /etc/bash.bashrc とプライベート初期化ファイル ~/.bashrc を読み取って実行しないでください。 このオプションは、シェルがshとして呼び出されるとデフォルトで有効になります。

したがって、デフォルトのシェルなのでsh読み込ま.bashrcれません。 .bashrcを使用してデフォルトのシェルをbashに設定しますchsh -s /bin/bash

関連情報