Cambiar de usuario y de salida contenidos variables
-
18-09-2019 - |
Pregunta
Estoy escribiendo un script bash y desea cambiar a otro usuario, CD en un directorio especificado por MYDIR de los usuarios bash_profile y mostrar el contenido.
Actualmente tengo:
read username
su - app${username} -c ls $MYDIR
La salida no es nada, mi primera suposición es que se trata de un problema de lectura de $ MYDIR de los usuarios de perfil como haciendo funciona bien manualmente por ejemplo.
#su - appadmin
#ls $MYDIR
Solución
Es necesario citar el comando a ejecutar.
En el momento de la cáscara está reemplazando $MYDIR
con el valor del entorno de la persona que llama. Además, sólo -c
pasa a la siguiente arg a ser ejecutado, es decir, sin la ls
$MYDIR
- es necesario poner comillas alrededor de todo el comando a distancia:
su - app${username} -c 'ls $MYDIR'
Otros consejos
Cambiar $MYDIR
a ${MYDIR:?}
. Esto provocará un error si no se establece MYDIR. Es posible que usted no está exportando la variable en el perfil, por lo que se trabaja en la línea de comandos, pero no la secuencia de comandos.