
bash
ターミナルから.bashrc
手動で実行しない限り、対話型ターミナルからはソースされません。bash
$ 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
あなたの場合、sh
は へのリンクですbash
が、 で説明されているようにman bash
、
bash が sh という名前で呼び出されると、POSIX 標準にも準拠しながら、可能な限り sh の過去のバージョンの起動動作を模倣しようとします。[...] sh という名前で対話型シェルとして呼び出されると、bash は変数 ENV を探し、定義されている場合はその値を展開し、展開された値を読み取りおよび実行するファイルの名前として使用します。shとして呼び出されたシェルは、他の起動ファイルからコマンドを読み取って実行しようとしません。--rcfile オプションは効果がありません。
そして
--norc
シェルが対話型の場合、システム全体の初期化ファイル /etc/bash.bashrc と個人の初期化ファイル ~/.bashrc を読み取って実行しません。 シェルが sh として呼び出される場合、このオプションはデフォルトでオンになります。
したがって、デフォルトのシェルは なのでsh
、.bashrc
は読み込まれません。 を使用して、デフォルトのシェルを bash に設定するだけですchsh -s /bin/bash
。