J’ai utilisé la commande su - (avec un tiret) et les variables d’environnements se sont échangées entre l’utilisateur root et l’utilisateur normal…
Cela a modifié plusieurs variables d’environnement dont $PWD :
Maintenant lorsque je me connecte avec l’utilisateur root j’atterris dans le répertoire de l’utilisateur normal et inversement.
Comment revenir en arrière s’ils-vous-plaît ?
Nope … si tu cherches à basculer d’un utilisateur à un autre et qu’il faille impérativement récupérer les variable d’environnement ile te faut systématiquement utiliser le -
Lors de l’utilisation de su, tu bascules l’utilisateur sans son environnement.
Par contre si tu utilise su - , tu bascules avec les variables d’environnement de l’utilisateur invoqué.
-, -l, --login
Fournir à l'utilisateur un environnement similaire à celui qu'il
aurait obtenu s'il s'était connecté directement.
Lorsque - est utilisé, il doit être indiqué comme dernier paramètre
de su. Les autres formes (-l et --login) ne présentent pas cette
restriction.
Quand tu utilises juste su, tu gardes l’environnement d’origine et tu bascule sur le user cible (mais sans l’environnement du user cible).
Avec su - tu bascules vers l’utilisateur cible avec l’environnement de l’utilisateur cible.
La documentation dit ceci : $ man su
3e paragraphe de DESCRIPTION :
For backward compatibility, su defaults to not change the current directory
and to only set the environment variables HOME and SHELL (plus USER and
LOGNAME if the target user is not root).
A se demander si l’origine de la confusion ne vient d’une traduction approximative française de man su.
En français, lien html: ‹ su [options] [nom_utilisateur] ›
En anglais, pas la même chose.
NAME
su - run a command with substitute user and group ID
SYNOPSIS
su [options] [-] [user [argument…]]
DESCRIPTION
su allows commands to be run with a substitute user and group ID.
When called with no user specified, su defaults to running an interactive shell as root. When user is
specified, additional arguments can be supplied, in which case they are passed to the shell.
@anon8635268
Peux-tu vérifier ce que donnent les commandes suivantes dans ton environnement.