bashrc直到运行bash命令才加载

mau*_*way 37 linux bash

我正在运行新安装的Arch Linux.当我登录用户(运行bash)并尝试使用.bashrc中的别名时,它会给我"命令未找到"错误.但是,如果我通过'bash'命令重新进入bash,该命令工作得很好.

是的,我已经在狂欢了.

最初的env:

SHELL=/usr/bin/bash
Run Code Online (Sandbox Code Playgroud)

运行bash后,它仍然是:

SHELL=/usr/bin/bash
Run Code Online (Sandbox Code Playgroud)

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

sjn*_*arv 65

阅读"bash(1)"中的INVOCATION部分以获取完整的详细信息(这是bash的手册页;使用man bash).登录时的第一个shell是"登录shell",这意味着该.bashrc文件不是来源的.您的第二次调用会创建一个交互式shell,其中.bashrc包含来源.

如果您始终希望.bashrc处理文件的内容,可以将以下行添加到.bash_profile文件中,如果该文件尚不存在,则创建该文件:

if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi
Run Code Online (Sandbox Code Playgroud)

按照其手册页,打击"[...]查找~/.bash_profile,~/.bash_login以及~/.profile以该顺序,并读取并从存在并且可读的第一个执行命令." 本地系统的约定和策略将确定这些文件中已存在哪些文件(如果有).

需要注意的是:请注意,.bash_profile在主目录中创建新文件可能会产生意外的副作用,即阻止在已存在的文件.bash_login.profile文件中读取和执行命令,从而进一步改变后续登录的行为.

  • 如果还没有,请创建'〜/ .bash_login'文件 (4认同)
  • 或者对任何兼容Bourne的登录shell使用`〜/ .profile`.(bash)的 (2认同)

Pau*_*ans 5

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

  • 谢谢,完全忘记了这一点.由于Ubuntu,不习惯设置东西. (2认同)