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?
command-line
bash
sudo
environment-variables
Jonathan
fuente
fuente

Respuestas:
Use la
SUDO_USERvariable de entorno en lugar deUSER.sudocoloca el nombre del usuario que lo ejecutó en laSUDO_USERvariable de entorno:Entonces, simplemente puede reemplazar
$USERcon$SUDO_USERen su script:Otras lecturas
man sudo, en la sección "MEDIO AMBIENTE":La página de manual también describe algunas otras variables de entorno relacionadas definidas por
sudoeso que pueden ser útiles, comoSUDO_UIDySUDO_GID¿Obtiene $ USER dentro del script de shell cuando se ejecuta con sudo?
fuente