Adjusting $PATH in /etc/profile does not affect root

9,636

You need to run a login shell (or run a non-interactive shell, but that's not what you want) to load /etc/profile.

Use

su - username

or in case of root

su -

to do this.

- is the same as -l or --login and makes the shell a login shell.

Share:
9,636

Related videos on Youtube

techshack
Author by

techshack

Updated on September 18, 2022

Comments

  • techshack
    techshack over 1 year

    I added a directory to PATH in /etc/profile. This works for my user account but not for root. It's easy to add it to my /root/.bashrc but I would like to understand what's wrong. It's a mostly unmodified Debian 6 so I think my changes should do the trick.

    Here is my /etc/profile:

    # /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
    # and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).
    
    if [ "`id -u`" -eq 0 ]; then
      PATH="/usr/lib/distcc/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
    else
      PATH="/usr/lib/distcc/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
    fi
    export PATH
    
    if [ "$PS1" ]; then
      if [ "$BASH" ]; then
        # The file bash.bashrc already sets the default PS1.
        # PS1='\h:\w\$ '
        if [ -f /etc/bash.bashrc ]; then
          . /etc/bash.bashrc
        fi
      else
        if [ "`id -u`" -eq 0 ]; then
          PS1='# '
        else
          PS1='$ '
        fi
      fi
    fi
    
    # The default umask is now handled by pam_umask.
    # See pam_umask(8) and /etc/login.defs.
    
    if [ -d /etc/profile.d ]; then
      for i in /etc/profile.d/*.sh; do
        if [ -r $i ]; then
          . $i
        fi
      done
      unset i
    fi
    

    Edit: The path I added is the distcc-stuff. Here is what echo $PATH tells me:

    $ echo $PATH
    /usr/lib/distcc/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
    # echo $PATH
    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    
    • HikeMike
      HikeMike almost 13 years
      How do you log in as root? Do you actually run a login shell?
    • techshack
      techshack almost 13 years
      I do su from a user shell in Gnome.
    • techshack
      techshack almost 13 years
      Oh I see, logging in on a terminal leads to correct set PATH. What's the difference?
    • cularis
      cularis almost 13 years
      Try su - to load roots profile.
    • techshack
      techshack almost 13 years
      That does the trick.
    • slhck
      slhck almost 13 years
      @techshack See here for more info
  • Jose Varghese
    Jose Varghese almost 4 years
    /etc/profile seems to be ignored when running sudo su to be root. However /root/.bashrc is respected.