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

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

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

[user @ host]----[$(pwd)]
$ 

通过将以下内容添加到我的 ~/.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

目标是当我使用“sudo su”时,唯一改变的是黑色 $ 变为红色 #。我查看了 /etc/bash.bashrc 和 /etc/profile,看看是否有一行需要注释掉,但有很多关于 debian_chroot 的内容我不明白,我不想搞砸。我该如何实现我想要的?

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

[user @ host]----[$(pwd)]
(red)#

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

答案1

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

有了sudo -s,你应该可以读取你自己的.bashrc。

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

使用id命令来确认您就是您所认为的那个人:

root@tau:~# id
uid=0(root) gid=0(root) groups=0(root)

答案2

为了将 root 提示的颜色更改为红色,我.bashrc按照此线程中的示例修改了文件。

regularuser@myubuntubox:~$ sudo su - 
root@myubuntubox:~# vim .bashrc

然后,在 vim 中,搜索PS1assignment 的最后出现位置,并在其后添加以下内容(请注意,它会更新的值,$PS1以便其他前面的行不需要修改,并且更改很容易恢复):

# Set RED prompt
PS1="\[\e[01;31m\]$PS1\[\e[00m\]"

答案3

遵循 belacqua 的有效答案https://askubuntu.com/a/305053/12218,通过发出 sudo su 来加载 root 的 .bashrc。

您可以通过输入以下命令来检查sudo su,然后cd ~您会看到您位于 root 的主目录中。

使用您以 root 身份登录(su = 切换用户),与以具有提升权限的用户身份登录sudo su相反。
sudo do some administrative task

因此,通过使用,sudo su您将成为实际的根,并且对环境所做的更改是专门对根所做的更改,即:sudo su后跟vim .bashrc

答案4

正如其他人之前在本主题中所说的那样,“su -”和“sudo -i”或“sudo -s”使用 /root 目录中的 .bashrc,因此您应该将其添加到文件末尾/root/.bashrc。我只是写了一个示例,但它可以让新手更容易理解。

# enable color when you login as root user with sudo -i or sudo -s
# this is just a test and I'am not sure if it works well
if [ `whoami` == 'root' ]; then
        # Set RED prompt [\033[01;31m\]
        PS1='${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
        # Set GREEN  prompt [\033[01;32m\]
        PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
fi

相关内容