1

I have the following PATH variable in /etc/profile. The last line should allow me to use the conda command for any user.

# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).

if [ "${PS1-}" ]; then
  if [ "${BASH-}" ] && [ "$BASH" != "/bin/sh" ]; 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

if [ -d /etc/profile.d ]; then
  for i in /etc/profile.d/*.sh; do
    if [ -r $i ]; then
      . $i
    fi
  done
  unset i
fi

export PATH=/opt/miniconda3/bin:$PATH

It works when I'm root :

root@server:~# echo $PATH
/opt/miniconda3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

But when I do su user to become user:

user@server:/root$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

/opt/miniconda3/bin: doesn't appear in $PATH variables as you can see. Shouldn't variables defined in /etc/profile be available system-wide ? How can I get it so ?

2
  • 1
    How exactly are you "connected as" user? did you use a command to switch from root? if so, please edit your question to include it. Feb 7, 2021 at 20:24
  • @steeldriver I edited the question.
    – Maxen_ce
    Feb 7, 2021 at 21:01

1 Answer 1

1

When you use su user, the resulting environment is not the same as when you start a login shell. Specifically, according to man su:

   The current environment is passed to the new shell. The value of $PATH
   is reset to /bin:/usr/bin for normal users, or
   /sbin:/bin:/usr/sbin:/usr/bin for the superuser. This may be changed
   with the ENV_PATH and ENV_SUPATH definitions in /etc/login.defs.

To get a login shell environment hen using su (in particular, to read the /etc/profile file) you can use su - user or su -l user:

   -, -l, --login
       Provide an environment similar to what the user would expect had
       the user logged in directly.

You must log in to answer this question.

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