Problem with su -

Bob Goodwin bobgoodwin at wildblue.net
Tue Mar 6 09:49:19 UTC 2012


On 06/03/12 01:09, Ed Greshko wrote:
> On 03/06/2012 09:26 AM, Bob Goodwin wrote:
>>         Why didn't I think of that? Because I'm trying to do too many
>>         things at once, distractions here.
>>
>>         "Bad" computer, "Good" prompt as user:
>>         [bobg at box9 ~]$ set | grep ^PS
>>         PS1='[\u@\h \W]\$ '
>>         PS2='>  '
>>         PS4='+ '
>>
>>         Bad prompt as root:
>>         [bobg at box9 ~]$ su
>>         Password:
>>         bash-4.2# set | grep ^PS
>>         PS1='\s-\v\$ '
>>         PS2='>  '
>>         PS4='+ '
>>
>>         It is different but where does it come from?
> The first question I would ask is do you have a .bash_profile or .bashrc
> file in root's home directory that has been modified?

      *


    bash-4.2# cat .bash_profile
    # .bash_profile

    # Get the aliases and functions
    if [ -f ~/.bashrc ]; then
         . ~/.bashrc
    fi

    # User specific environment and startup programs

    PATH=$PATH:$HOME/.local/bin:$HOME/bin

    export PATH


      *



    bash-4.2# cat .bashrc
    # .bashrc

    # Source global definitions
    if [ -f /etc/bashrc ]; then
         . /etc/bashrc
    fi

    # User specific aliases and functions



>
> Also, have you done anything to /etc/bashrc ?

    Not knowingly ...

>     I'm fairly certain that
> is where the change from PS1='\s-\v\$ '  to PS1='[\u@\h \W]\$ ' should
> take place.  I wonder if it is even being sourced, based on the manner
> of other problems you've been reporting as of late.
>

    Here is the entire /etc/bashrc file, it's not obvious to me which
    line refers to the root prompt? Perhaps un-commenting  #  
    PS1="[\u@\h:\l \W]\\$ "  is what needs to be done but "# It's NOT a
    good idea to change this file unless you know what you are doing."

      *


    bash-4.2# cat /etc/bashrc
    # /etc/bashrc

    # System wide functions and aliases
    # Environment stuff goes in /etc/profile

    # It's NOT a good idea to change this file unless you know what you
    # are doing. It's much better to create a custom.sh shell script in
    # /etc/profile.d/ to make custom changes to your environment, as this
    # will prevent the need for merging in future updates.

    # are we an interactive shell?
    if [ "$PS1" ]; then
       if [ -z "$PROMPT_COMMAND" ]; then
         case $TERM in
         xterm*)
           if [ -e /etc/sysconfig/bash-prompt-xterm ]; then
               PROMPT_COMMAND=/etc/sysconfig/bash-prompt-xterm
           else
               PROMPT_COMMAND='printf "\033]0;%s@%s:%s\007" "${USER}"
    "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'
           fi
           ;;
         screen)
           if [ -e /etc/sysconfig/bash-prompt-screen ]; then
               PROMPT_COMMAND=/etc/sysconfig/bash-prompt-screen
           else
               PROMPT_COMMAND='printf "\033]0;%s@%s:%s\033\\" "${USER}"
    "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'
           fi
           ;;
         *)
           [ -e /etc/sysconfig/bash-prompt-default ] &&
    PROMPT_COMMAND=/etc/sysconfig/bash-prompt-default
           ;;
         esac
       fi
       # Turn on checkwinsize
       shopt -s checkwinsize
       [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ "
       # You might want to have e.g. tty in prompt (e.g. more virtual
    machines)
       # and console windows
       # If you want to do so, just add e.g.
       # if [ "$PS1" ]; then
       #   PS1="[\u@\h:\l \W]\\$ "
       # fi
       # to your custom modification shell script in /etc/profile.d/
    directory
    fi

    if ! shopt -q login_shell ; then # We're not a login shell
         # Need to redefine pathmunge, it get's undefined at the end of
    /etc/profile
         pathmunge () {
             case ":${PATH}:" in
                 *:"$1":*)
                     ;;
                 *)
                     if [ "$2" = "after" ] ; then
                         PATH=$PATH:$1
                     else
                         PATH=$1:$PATH
                     fi
             esac
         }

         # By default, we want umask to get set. This sets it for
    non-login shell.
         # Current threshold for system reserved uid/gids is 200
         # You could check uidgid reservation validity in
         # /usr/share/doc/setup-*/uidgid file
         if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
            umask 002
         else
            umask 022
         fi

         # Only display echos from profile.d scripts if we are no login
    shell
         # and interactive - otherwise just process them to set envvars
         for i in /etc/profile.d/*.sh; do
             if [ -r "$i" ]; then
                 if [ "$PS1" ]; then
                     . "$i"
                 else
                     . "$i" >/dev/null 2>&1
                 fi
             fi
         done

         unset i
         unset pathmunge
    fi
    # vim:ts=4:sw=4



More information about the users mailing list