当我以 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
问候