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.
Related videos on Youtube
Author by
techshack
Updated on September 18, 2022Comments
-
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 whatecho $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 almost 13 yearsHow do you log in as root? Do you actually run a login shell?
-
techshack almost 13 yearsI do
su
from a user shell in Gnome. -
techshack almost 13 yearsOh I see, logging in on a terminal leads to correct set PATH. What's the difference?
-
cularis almost 13 yearsTry
su -
to load roots profile. -
techshack almost 13 yearsThat does the trick.
-
slhck almost 13 years@techshack See here for more info
-
-
Jose Varghese almost 4 years
/etc/profile
seems to be ignored when runningsudo su
to be root. However/root/.bashrc
is respected.