以 root 身份登录时未运行 ~/.bashrc

以 root 身份登录时未运行 ~/.bashrc

当我以 root 身份登录时:

ubuntu login: root                                                                                  
Password:                                                                                               
Last login: Tue Apr  7 17:31:14 CDT 2020 on ttyS0                                                       
Welcome to Ubuntu 19.04 (GNU/Linux 5.0.0-38-generic x86_64)                                             

我的 /root/.bashrc(以及 /root/.bash_aliases)没有运行。这正常吗?我该如何修复?

更多信息:

# getent passwd| grep root                                     
root:x:0:0:root:/root:/bin/bash

我的/root/.profile正常:

# cat /root/.profile                                           
# ~/.profile: executed by Bourne-compatible login shells.                       

if [ "$BASH" ]; then                                                            
  if [ -f ~/.bashrc ]; then                                                     
    . ~/.bashrc                                                                 
  fi                                                                            
fi                                                                              

mesg n || true                                                                  

$BASH 设置正确:

# echo $BASH                                                   
/bin/bash

/root/.bashrc 也正常,下面是一段代码:

if [ -f ~/.bash_aliases ]; then                                                 
    . ~/.bash_aliases                                                           
fi                                                                              

如果我从命令行执行“。~/.bashrc”,它会按预期工作。

答案1

如果存在~/.bash_profile~/.bash_login,bash 将运行它而不是~/.profile。一些软件安装程序会很有帮助地将其安装步骤添加到 (通常) ~/.bash_profile,因此即使您删除它 (并将其内容合并到~/.profile),它也可能稍后重新创建。

理想情况下,我建议将所有特定于 bash 的东西(即来源~/.bashrc)移到中~/.bash_profile,让它也来源通用的~/.profile,只留下mesg通用的~/.profile(所以如果你在不同的 shell 中启动它它就会起作用)

以下是我要输入的内容~/.profile

# cat /root/.profile                                           
# ~/.profile: executed by Bourne-compatible login shells.                       

mesg n || true 

并且~/.bash_profile(请注意,它不必测试$BASH,因为它已经在特定于 bash 的文件中):

# ~/.bash_profile: executed by bash login shells.

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

# If the generic profile exists, source that as well.
if [ -f ~/.profile ]; then                                                     
    . ~/. profile                                                                 
fi

答案2

嗨,如果你尝试

getent passwd| grep root

该命令的返回结果与此类似?

root:x:0:0:root:/root:/bin/bash

也许你的 shell 与 /bin/bash 不同

您还可以查看您的 root 个人资料

cat ~/.profile

你需要有:

# ~/.profile: executed by Bourne-compatible login shells.

if [ "$BASH" ]; then
  if [ -f ~/.bashrc ]; then
    . ~/.bashrc
  fi
fi

mesg n || true

问候

相关内容