Question

Comment obtenir le bon $ USER si j'exécute un script shell avec sudo?

Je les exécute en tant que scripts de post-installation dans un package d'installation Mac, où ils sont automatiquement configurés, mais je dois effectuer certaines tâches avec le nom d'utilisateur.

$ HOME est correct, cependant. La méthode inélégante consisterait à extraire le nom du chemin de base, mais je me demande s’il existe un moyen naturel de le faire.

Je ne peux pas influencer la façon dont les scripts sont appelés, car il s'agit d'un appel automatique à l'intérieur du programme d'installation.

Était-ce utile?

La solution

Sur mon système, la variable $ SUDO_USER est définie sur le nom d'utilisateur de l'appelant.

Vous ne devez pas extraire directement le nom d'utilisateur de la variable $ {HOME} . C'est configuré et non calculé. Pour extraire le nom d'utilisateur, vous pouvez jeter un coup d'œil dans le fichier / etc / passwd , mais cela dépend fortement du système, par exemple. vous devez parfois consulter un annuaire LDAP ou les entrées sont propagées via NIS ...

Autres conseils

Vous pouvez utiliser $ (logname) , qui renvoie votre identifiant même si vous êtes en train de vous lancer.

Inspectez la variable SUDO_USER .

http://www.gratisoft.us/sudo/man/sudo. html # environnement

Un autre moyen d'obtenir l'utilisateur est d'utiliser la commande who . Ceci est utile parfois lorsque vous ne vous souciez pas de savoir si l’utilisateur a déjà fait une recherche ou non.

who -m | awk '{print $1;}'

SUDO_USER n'est pas portable. Ce n'est pas défini sur Fedora 17.

Les variables $ USER et $ UID ne sont pas prévisibles lors de l'appel de sudo. Certaines distributions signalent le sudoer, d’autres le root.

C'est loin d'être parfait, mais vous pouvez utiliser test -w ~ root & amp; & amp; echo j'ai un accès en écriture à ~ root .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top