$ 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 whoami
use who am i
. Esto ejecuta el who
comando 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 sudo
o sudo su [whatever]
. También funciona independientemente de cuántas veces su
y sudo
se llamen.
who am i
es la respuesta aquí.who am i
eswho mom likes
. Tu elección.who
devuelve 2 líneas para mí, ambas contienen mi nombre, ywho am i
no devuelve ninguna. ¿Alguna ayuda?who am i
no hace nada, parece ser simplewho
, por lo quewho | awk '{print $1}'
funciona como se esperaba;)awk
instalado, también puede usarcut
:who mom likes | cut -d' ' -f1
osed
por alguna razón:who mom likes | sed -n 's/^\([^ ]*\).*/\1/p'
Creo que $ SUDO_USER es válido.
fuente
sudo env
muestraSUDO_USER
perosudo echo $SUDO_USER
no 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 lasudo
ejecución de ambos y no sudo. Pero la respuesta de evanlogname
suena más fácil$SUDO_USER
no funciona consudo su -
, perologname
siempre 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
,id
o$SUDO_USER
no está bien aquí.En realidad,
who
nunca 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