¿Puedo acceder a la variable $ USER de origen desde un script ejecutado con `sudo`?

19

Una pregunta extraña, lo sé. Aquí está el guión:

echo $USER

Aquí está el comando que uso para ejecutarlo:

sudo ./myscript.sh

Ahora mismo imprime "root" pero quiero que imprima jon, mi nombre de usuario. ¿Hay alguna manera de hacerlo cambiando el script y no el comando?

Jonathan
fuente
Sí, hay formas de hacerlo. Pero quizás la forma más fácil es una solución alternativa. Llame a ese script desde otro script, donde 'guarde' su identificación de usuario para que el 'sudo script' pueda acceder a él.
sudodus

Respuestas:

28

Use la SUDO_USERvariable de entorno en lugar de USER.

sudocoloca el nombre del usuario que lo ejecutó en la SUDO_USERvariable de entorno:

ek@Io:~$ sudo sh -c 'echo $USER'
[sudo] password for ek:
root
ek@Io:~$ sudo sh -c 'echo $SUDO_USER'
ek

Entonces, simplemente puede reemplazar $USERcon $SUDO_USERen su script:

echo $SUDO_USER

Otras lecturas

Eliah Kagan
fuente