.bashrc的奇怪行为

时间:2014-05-09 16:51:41

标签: linux bash

我在网络服务器上稍微更改了 .bashrc 文件,为 ls -la 上的链接添加颜色,依此类推。但是当我使用ssh:ssh user @ server登录并键入 ls -al 时,没有任何颜色着色,似乎我的.bashrc文件尚未在登录时应用。如果我只输入 bash 然后再次 ls -la - 一切正常。简而言之,我在.bashrc中的所有规则只有在授权后输入 bash 时才会显示,有点无聊。

2 个答案:

答案 0 :(得分:3)

当您通过ssh登录时,您将调用登录shell 。在现有shell中键入bash时,将调用交互式shell

调用登录shell时会读取

.bash_profile,并在调用交互式shell时读取.bashrc

尝试将此添加到您的.bash_profile

if [ -f ~/.bashrc ]; then
    source ~/.bashrc
fi

有关详细信息,请参阅bash(1)

答案 1 :(得分:1)

仅当shell是交互式而不是登录shell时,才会读取

~/.bashrc

  

当启动不是登录shell的交互式shell时,bash会从中读取并执行命令   /etc/bash.bashrc和〜/ .bashrc,如果存在这些文件。

此外:

  

Bash尝试确定何时使用[...] sshd运行。如果bash确定它以这种方式运行,它会从〜/ .bashrc和〜/ .bashrc读取并执行命令,如果   这些文件存在且可读。如果以sh。

调用,它将不会这样做

所以:

  • 您的远程shell必须是bash,而不是sh
  • 它不能是登录shell,
  • 它必须是一个交互式shell。