以 root 身份运行时更改 bash 提示的行为

zmi*_*ell 16 command-line bash prompt bashrc

在你点击离开之前,这不是典型的“我如何让我的 bash 提示有颜色”的问题。我已经将我的 bash 提示自定义为如下所示:

[user @ host]----[$(pwd)]
$ 
Run Code Online (Sandbox Code Playgroud)

通过将以下内容添加到我的 ~/.bashrc 文件中,括号中的所有内容均为浅蓝色,其他所有内容(包括 $)均为黑色

# Turn the prompt symbol red if the user is root
if [ $(id -u) -eq 0 ];
then # you are root, make the prompt red
    PS1="[\e[01;34m\u @ \h\e[00m]----[\e[01;34m$(pwd)\e[00m]\n\e[01;31m#\e[00m "
else
    PS1="[\e[01;34m\u @ \h\e[00m]----[\e[01;34m$(pwd)\e[00m]\n$ "
fi
Run Code Online (Sandbox Code Playgroud)

目标是使它在我使用“sudo su”时唯一改变的是黑色 $ 变为红色 #。我查看了 /etc/bash.bashrc 和 /etc/profile 以查看是否只有一行注释,但是有一堆关于 debian_chroot 的内容我不明白,而且我不想要把事情搞砸。我怎样才能完成我想要的?

PS 这就是我希望以 root 身份显示的提示

[user @ host]----[$(pwd)]
(red)#
Run Code Online (Sandbox Code Playgroud)

编辑:标记这已解决,将上面的代码附加到 ~/.bashrc 而 root 实现了我的目标。另外,在上面的代码中,$(pwd) 只显示主目录(我猜是因为这是打开终端时的工作目录),并且从不更新。用 \w 替换 $(pwd) 修复了这个问题,但将主目录显示为~,这是我试图避免的。

bel*_*qua 12

这还取决于您如何成为 root 用户。如果您在环境中使用类似su - root或 的内容sudo -i,则需要在 root 用户的 .bashrc 中进行更改。

使用sudo -s,您应该阅读自己的 .bashrc。

考虑添加一些 printf 或 echo 语句来调试您的代码,告诉您它何时执行。

使用id命令来确保你就是你认为的你:

root@tau:~# id
uid=0(root) gid=0(root) groups=0(root)
Run Code Online (Sandbox Code Playgroud)

  • `sudo su` 读取 ~root/.bashrc (至少目前在我的 13.04 系统上实现)。 (2认同)