
Tengo un script bash que debería ejecutar varios comandos. Los comandos funcionan bien cuando se ingresan en una terminal, pero cuando intento ejecutarlos desde dentro del script no funcionan, así que asumo que es algo específico del entorno.
En el guión tengo
exec "$cmd"
y no funciona, mientras que si copio el contenido de $cmd y lo pego en una terminal funciona bien.
¿Cómo mantengo el entorno actual cuando ejecuto el script? ¿O tienes alguna otra idea de lo que podría ser?
Respuesta1
En su lugar, coloque el comando en una matriz.
arr=(foo bar baz quux)
exec "${arr[@]}"
Respuesta2
Escribe set -o allexport
en la parte superior de tu script bash. Esto debería exportar automáticamente todas las variables que defina. (Tenga en cuenta que esto se considera un mal estilo; lo mejor sería simplemente exportar las variables adecuadas).
Respuesta3
Si todos los comandos deben ejecutarse desde el mismo directorio, puede usar
cd /d $Location
al comienzo del script para establecer la ubicación de los comandos que se ejecutarán.
cd: este es el comando de cambio de directorio. /d: este modificador hace que cd cambie tanto la unidad como el directorio a la vez.
si desea que el comando se ejecute desde D:\scripts sin el /d, deberá hacerlo
D:
cd \scripts
pero con el comando anterior puedes hacerlo en una línea
cd /d D:\scripts
-Editar de nuevo-
Mis disculpas, dice claramente BASH pero lo leí en BATCH por alguna razón. Será más cuidadoso en el futuro.