$ SUDO_USER no funciona si está usando sudo su -.
También requiere varias comprobaciones, si es que $USER == 'root'se obtiene $SUDO_USER.
En lugar del comando whoamiuse who am i. Esto ejecuta el whocomando filtrado para la sesión actual. Te da más información de la que necesitas. Entonces, haz esto para obtener solo el usuario:
who am i | awk '{print $1}'
Alternativamente (y más simple) puede usar logname. Hace lo mismo que la declaración anterior.
Esto le da el nombre de usuario que inició sesión en la sesión.
Estos funcionan independientemente de sudoo sudo su [whatever]. También funciona independientemente de cuántas veces suy sudose llamen.
who am ies la respuesta aquí.who am ieswho mom likes. Tu elección.whodevuelve 2 líneas para mí, ambas contienen mi nombre, ywho am ino devuelve ninguna. ¿Alguna ayuda?who am ino hace nada, parece ser simplewho, por lo quewho | awk '{print $1}'funciona como se esperaba;)awkinstalado, también puede usarcut:who mom likes | cut -d' ' -f1osedpor alguna razón:who mom likes | sed -n 's/^\([^ ]*\).*/\1/p'Creo que $ SUDO_USER es válido.
fuente
sudo envmuestraSUDO_USERperosudo echo $SUDO_USERno imprime nada ...sudo echo $SUDO_USER, bash está evaluando $ SUDO_USER antes de ejecutar sudo. pruebe el script publicado en esta solución, funciona.echo ${SUDO_USER:-$USER}para detectar lasudoejecución de ambos y no sudo. Pero la respuesta de evanlognamesuena más fácil$SUDO_USERno funciona consudo su -, perolognamesiempre funciona.A continuación se explica cómo obtener el nombre de usuario de la persona que llamó al script, sin importar si es sudo o no:
o una versión más corta
fuente
user=${SUDO_USER:-$(whoami)}ouser=$(logname)who am i | awk '{print $1}'no funcionó para mí perowho|awk '{print $1}'servirá el trabajofuente
Curioso, el sistema distingue entre UID reales y efectivos , pero no puedo encontrar ningún programa que exporte esto a nivel de shell.
fuente
Utilizando
whoami,who am i,who,ido$SUDO_USERno está bien aquí.En realidad,
whonunca es una solución a la pregunta, ya que solo enumerará los usuarios que iniciaron sesión, que pueden ser docenas ...En mi opinión, la única respuesta valiosa es el uso de
logname.Espero que esto ayude
Robar
fuente
Si es el UID que está buscando (útil para travesuras de Docker), entonces esto funciona:
fuente