目标

目标

目标

类似的问题已经被问过很多次了,但我还没有看到它以我想要的方式实现。我想实现以下目标:

  • 将 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 用户创建一个符号链接是有效的。

相关内容