目标
类似的问题已经被问过很多次了,但我还没有看到它以我想要的方式实现。我想实现以下目标:
- 将 Bash 的提示设置为
username@hostname directory #
root 会话或username@hostname directory $
任何其他用户的提示。 .bashrc
仅为我的用户定义文件,并创建一个符号链接对于 root 用户(或一般的任何其他用户)。我想这样做,这样我就不必为多个用户复制文件,并在每次更新.bashrc
.
到目前为止我所拥有的
# Bash prompt to ``username@hostname directory $ '' in bold
if [ "$(id -u)" = "0" ]; then
PS1="\e[1m\u@\h \w # \e[0m"
else
PS1="\e[1m\u@\h \w $ \e[0m"
fi
这,有点作品。如果我在用户的会话中启动终端,我的提示将如预期的那样。但是,当我使用su -
切换到root
的会话时,问题就出现了。
由于某种原因,.bashrc
没有获取来源,并且我坚持使用默认提示([root@hostname directory]#
)。如果我这样做source .bashrc
,提示将更新为我想要的 ( root@hostname directory #
)。
问题
我怎样才能达到我想要的结果?一个.bashrc
文件,对所有其他用户进行符号链接,并在我切换到任何特定用户时正确加载。
答案1
解决方案
作为@ilkkachu在评论中解释了(顺便说一句“谢谢”):
su -
运行登录 shell,并且 Bash 不会.bashrc
从登录 shell 中读取数据。除非您明确地从.profile
、 或.bash_profile
、 或中获取它.bash_login
,无论您拥有哪一个。所以你可能想检查一下。
因此,添加source .bashrc
到我的用户的.bash_profile
,然后.bash_profile
为 root 用户创建一个符号链接是有效的。