1 votes

Un chemin défini dans /etc/profile/ n'apparaît pas dans l'environnement des autres utilisateurs

J'ai la variable PATH suivante dans /etc/profile. La dernière ligne devrait me permettre d'utiliser le conda pour tout utilisateur.

# /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

Cela fonctionne quand je suis à la racine :

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

Mais quand je le fais su user pour devenir 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: n'apparaît pas dans les variables $PATH comme vous pouvez le voir. Les variables définies dans /etc/profile ne devraient-elles pas être disponibles dans tout le système ? Comment puis-je faire en sorte que ce soit le cas ?

0voto

steeldriver Points 118154

Lorsque vous utilisez su user l'environnement résultant n'est pas le même que lorsque vous démarrez un login Shell. Plus précisément, selon 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.

Pour obtenir une poule d'environnement Shell de login en utilisant su (en particulier, pour lire le /etc/profile ), vous pouvez utiliser su - user o su -l user :

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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X