$ SUDO_USER ne fonctionne pas si vous utilisez sudo su -
.
Il nécessite également plusieurs vérifications - si $USER == 'root'
alors obtenez $SUDO_USER
.
Au lieu de la commande, whoami
utilisez who am i
. Cela exécute la who
commande filtrée pour la session en cours. Il vous donne plus d'informations que nécessaire. Alors, faites ceci pour obtenir uniquement l'utilisateur:
who am i | awk '{print $1}'
Alternativement (et plus simple), vous pouvez utiliser logname
. Il fait la même chose que la déclaration ci-dessus.
Cela vous donne le nom d'utilisateur qui s'est connecté à la session.
Ceux-ci fonctionnent indépendamment de sudo
ou sudo su [whatever]
. Cela fonctionne également quel que soit le nombre de fois su
et sudo
sont appelés.
who am i
est la réponse ici.who am i
estwho mom likes
. Votre choix.who
renvoie 2 lignes pour moi, contenant toutes les deux mon nom, etwho am i
n'en renvoie aucune. De l'aide?who am i
ne fait rien, cela semble être simplewho
, doncwho | awk '{print $1}'
fonctionne comme prévu;)awk
installé, vous pouvez également utilisercut
:who mom likes | cut -d' ' -f1
oused
pour une raison quelconque:who mom likes | sed -n 's/^\([^ ]*\).*/\1/p'
Je pense que $ SUDO_USER est valide.
la source
sudo env
montreSUDO_USER
maissudo echo $SUDO_USER
n'imprime rien ...sudo echo $SUDO_USER
, bash évalue $ SUDO_USER avant d' exécuter sudo. essayez le script publié dans cette solution, cela fonctionne.echo ${SUDO_USER:-$USER}
pour attraper à la foissudo
et non-sudo en cours d'exécution. Mais la réponse d'Evanlogname
semble plus facile$SUDO_USER
ne fonctionne pas avecsudo su -
, maislogname
fonctionne toujours.Voici comment obtenir le nom d'utilisateur de la personne qui a appelé le script, que sudo ou non:
ou une version plus courte
la source
user=${SUDO_USER:-$(whoami)}
ouuser=$(logname)
who am i | awk '{print $1}'
n'a pas fonctionné pour moi maiswho|awk '{print $1}'
servira le travailla source
Bizarre, le système fait la distinction entre les UID réels et effectifs , mais je ne trouve aucun programme qui exporte cela au niveau du shell.
la source
En utilisant
whoami
,who am i
,who
,id
ou$SUDO_USER
n'est pas ici.En fait, ce
who
n'est jamais une solution à la question, car il ne listera que les utilisateurs connectés, qui peuvent être des dizaines ...À mes yeux, la seule réponse valable est l'utilisation de
logname
.J'espère que cela t'aides
Rob
la source
Si c'est l'UID que vous recherchez (utile pour les manigances de docker), alors cela fonctionne:
la source