Existe-t-il un moyen de voir la variable d'environnement d'un autre utilisateur? Je veux le faire en tant que root, donc les autorisations ne seront pas un problème, je suppose.
Pour l'utilisateur lui-même, j'utilise echo $PATH
ou set | grep PATH
(ou set
lorsque je ne me souviens pas du nom de la variable). Quelle serait une instruction similaire pour un autre utilisateur?
Pour ce que ça vaut, je suis sur Ubuntu Server 13.04.
echo $MAIL
mais je pensais qu'il pourrait y avoir un raccourci..forward
)? Les utilisateurs définissent souvent quelques variables dans leurs.profile
fichiers de configuration ou dans d'autres, et il n'y a aucun moyen de les énumérer de manière fiable. Encore une fois, quel problème essayez-vous de résoudre?Réponses:
Une autre option consiste à utiliser
env
. Exécutez ceci commeroot
:Par exemple
la source
HOME=/root
. C'est le répertoire personnel de root, mais ce n'est pas mon répertoire personnel standard. Si vous voulez connaître l'environnement qu'un utilisateur particulier obtiendrait lorsqu'il se connecte, vous devez exécuter les scripts de démarrage du shell de connexion de cet utilisateur particulier (et n'oubliez pas que son shell de connexion peut être différent de votre shell de connexion).root
partir du gestionnaire de connexion? Cela fonctionne bien si je tombe sur un tty et me connecte en tant queroot
.env | grep HOME
reçoisHOME=/home/uwe
; J'exécutesu
, puis une fois de plusenv | grep HOME
et j'obtiensHOME=/root
, puis je courssudo -u uwe env | grep HOME
et j'obtiens toujoursHOME=/root
.xterm
place de mon terminal habituel) et j'ai obtenu le résultat attendu.sudo
définit la variable HOME uniquement si l'-H
option est présente ou si l'entrée correspondante dans/etc/sudoers
est définie. Il semble que nos fichiers sudoers diffèrent. Quoi qu'il en soit, c'est probablement une bonne idée à utiliser-H
ici, et peut-être aussi-i
.Pour un utilisateur, vous pouvez faire ceci:
Liste $ PATH de tous les utilisateurs:
@Camil Staps
. ~/.profile
est donc une astuce que j'apprends de ma personne préférée, Peteris Krumins. Il a expliqué l'astuce ici . Peut-être que la version bash plus tard avait un bâtiment avec optionNON_INTERACTIVE_LOGIN_SHELLS
.la source
$PATH
cela fonctionne aussi sans la. ~/.profile;
pièce - à quoi ça sert?$PATH
même sans sourcing~/.profile
, mais ce n'est certainement pas celle que vous souhaitez (= la valeur que cet utilisateur verrait lorsqu'il se connecterait). Même le sourcing~/.profile
n'est pas entièrement fiable, car l'utilisateur peut utiliser un shell dont le fichier de démarrage est différent de~/.profile
.~/.profile
. Mais dans tous les cas, le comportement desudo
peut être configuré en grande partie dans/etc/sudoers
(voir ma discussion avec terdon), donc lorsque nos systèmes se comportent différemment, cela est probablement dû à des différences dans les fichiers de configuration.de la racine, vous pouvez
su -
à l'utilisateur, puis grep la variable d'environnement que vous souhaitez voir:su - <username> -c 'echo $PATH'
la source
runuser -l <username> -c "env | grep <var>" | cut -d '=' -f 2
marche bien pour moi. Si vous n'êtes pas root, vous devez préfixer la commande avecsudo
.