Before you click away, this isn't the typical "how do I make my bash prompt have color" question. I've already customized my bash prompt to look like this:
[user @ host]----[$(pwd)]
$
where everything in brackets is light blue, and everything else (including $) is black by adding the following to my ~/.bashrc file
# 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
The goal is to make it such that the only thing that changes when I use 'sudo su' is that the black $ changes into a red #. I've looked in /etc/bash.bashrc and /etc/profile to see if there is just a line to comment out, but there is a bunch of stuff about debian_chroot that I don't understand, and I don't want to screw something up. How can I accomplish what I want?
P.S. This is what I want the prompt to look like as root
[user @ host]----[$(pwd)]
(red)#
edit: Mark this solved, appending the above code to ~/.bashrc while root accomplished my goal. Also, in the above code, $(pwd) only displays the home directory (I guess because that is the working directory when the terminal is opened), and never updates. Replacing $(pwd) with \w fixes this, but displays the home directory as ~
, which I was trying to avoid.
\e[01;31m
, in\[...\]
. This is explained under PROMPTING in the manual. Also see mywiki.wooledge.org/BashFAQ/053pwd
did not work in the prompt is, that you need to escape the dollar-sign, otherwise$(pwd)
will be executed before the content is placed in $PS1. You can test it with this:PS1="\$(pwd) "
.