Esta es mi primera publicación,
Tengo algunas preguntas sobre su - [usuario] -c [comando]
Hice algunas búsquedas y encontré esto.hiloy estootroque están relacionados con mi pregunta.
Estoy intentando configurar una variable de entorno de un usuario si no existe.
# This function checks for a user $1, a var nammed $2 to $3 and set it to $3 if $2 not set.
# $1: User to set env
# $2: Var to set
# $3: Value to add in $2 if not exist in $2
function setEnvIfNotDef () {
if [ ! su ${1} -c "echo "${!2}" | grep "${3}"" ]
then
if [ ${2} = "PATH" ]
then
su ${1} -c "export ${2}=${!2}:${3}"
else
su ${1} -c "export ${2}=${3}"
fi
fi
}
setEnvIfNotDef ${USER_NAME} "TEST_HOME" ${INSTALL_PATH}
(USER_NAME e INSTALL_PATH están definidos en mi código ^^)
El problema es que cuando intento el comando su - root -c en mi terminal en Yosemite/CentOS7.
Elio@Hackintosh-Elio [16:43:41] [Elio] #7975 $ su - root -c "whoami"
Password:
root
Elio@Hackintosh-Elio [16:43:59] [Elio] #7976 $ su - root -c "echo $HOME"
Password:
/Users/Elio
El - después de su es igual a -l ¿verdad? ¿Se supone que no debo estar en el entorno root?
¿Un poco de ayuda por favor? :)
Gracias
Respuesta1
Utilice un apóstrofo simple en lugar del doble:
$ su - -c 'echo $HOME'
Password:
/root