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
为什么它会来源?您的默认 shell 不是 bash,而是sh
:
$ echo $SHELL
/bin/sh
在大多数现代系统中,sh
是基本 shell 的符号链接。以我的 Debian 为例:
$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Aug 1 2012 /bin/sh -> dash
在您的情况下,sh
是一个链接到bash
但是,如以下所述man bash
:
如果使用 sh 名称调用 bash,它会尝试尽可能模仿 sh 历史版本的启动行为,同时也符合 POSIX 标准。 [...] 当作为名为 sh 的交互式 shell 调用时,bash 会查找变量 ENV,如果定义了该变量,则扩展其值,并使用扩展后的值作为要读取和执行的文件的名称。自从作为 sh 调用的 shell 不会尝试从任何其他启动文件读取和执行命令,--rcfile 选项无效。
和
--norc
如果 shell 是交互式的,则不要读取和执行系统范围的初始化文件 /etc/bash.bashrc 和个人初始化文件 ~/.bashrc。 如果 shell 作为 sh 调用,则默认启用此选项。
因此,由于您的默认 shell 是sh
,.bashrc
不会被读取。只需使用 .bashrc 将默认 shell 设置为 bash 即可chsh -s /bin/bash
。