Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I am using ubuntu-10.04 and bash. I want to go into root and have it change my prompt to underlined red characters to reflect that I am in root. At the bash prompt, if I type:

$ sudo bash

then I go into root, however my prompt doesn't change. In /root/.bashrc I have:

RED="\[\033[0;31m\]"
UNDERLINE="\[\033[4m\]"
DEFAULT="\[\033[0m\]"
export PS1=$RED$UNDERLINE'\u@\h:\w\$'$DEFAULT' '

however this file isn't being read. In order for it to be read I have to enter at the prompt:

# . /root/.bashrc

which I don't want to have to do. How do I set it up so that when I go into root, /root/.bashrc runs automatically?

share|improve this question
  • First, is sudo root even a valid command? (sudo -s or sudo -i would be.)

  • I prefer editing my own .bashrc instead of root's. You can have, for example,

    if (( $UID == 0 )); then
        PS1="$RED$UNDERLINE"
    else
        PS1="$GREEN"
    fi
    PS1="$PS1\u@\h:\w\$$DEFAULT "
    
  • You can use sudo -i to make root's rcfiles be read instead of yours.

share|improve this answer
    
Sorry, I meant to say sudo bash. You're right, sudo root is meaningless. Anyway, your suggestion of an if statement on the $UID works. – Philip Hunt Apr 10 '11 at 11:58
    
@Philip: If an answer is helpful, consider marking it as accepted. – grawity Apr 10 '11 at 12:07

Seems like sudo is configured to use the original users's environment variables and not the new ones.

Either you set the env_reset and env_keep options in /etc/sudoers or you explicitly reset the environment variables to the ones of the target user with -H: sudo -H -u root

share|improve this answer

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .