我正在运行新安装的Arch Linux。当我登录用户(运行bash)并尝试使用.bashrc中的别名时,它会给我“命令未找到”错误。但是,如果我通过'bash'命令重新进入bash,那么命令就可以了。
是的,我已经在bash。
最初env:SHELL=/usr/bin/bash
运行bash后,它仍然是:
SHELL=/usr/bin/bash
所以我不太确定问题出在哪里。
答案 0 :(得分:59)
阅读“bash(1)”中的INVOCATION部分以获取完整的详细信息(这是bash的手册页;使用man bash
)。登录时的第一个shell是“登录shell”,这意味着.bashrc
文件不是来源的。您的第二次调用会创建一个交互式shell,其中.bashrc
来源。
如果您始终希望处理.bashrc
文件的内容,可以将以下行添加到.bash_profile
文件中,如果该文件尚不存在,则创建该文件:
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
根据其手册页,bash“[...]按顺序查找~/.bash_profile
,~/.bash_login
和~/.profile
,并从第一个查找并执行命令存在且可读。“本地系统的约定和策略将确定哪些文件(如果有)已存在。
请注意:请注意,在主目录中创建新的.bash_profile
可能会产生意外的副作用,导致无法在.bash_login
或{{1}中读取和执行命令文件已经存在,进一步改变了后续登录的行为。
答案 1 :(得分:5)
您是否查看了~/.profile
,~/.bash_login
和~/.bash_profile
个文件?