44

我正在运行新安装的 Arch Linux。当我登录用户(运行 bash)并尝试使用 .bashrc 中的别名时,它给了我“找不到命令”错误。但是,如果我通过“bash”命令重新输入 bash,该命令就可以正常工作。

是的,我已经在 bash 中了。

env 最初:

SHELL=/usr/bin/bash

env 运行 bash 后,它仍然是:

SHELL=/usr/bin/bash

所以我不太确定问题出在哪里。

4

2 回答 2

85

阅读“bash(1)”中的 INVOCATION 部分以获取完整的详细信息(这是 bash; use 的手册页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.profile文件中的命令,从而进一步改变后续登录的行为。

于 2013-08-23T02:18:34.017 回答
5

你看过你的~/.profile,~/.bash_login~/.bash_profile文件吗?

于 2013-08-23T02:07:25.957 回答