mantener el entorno al ejecutar en el script

mantener el entorno al ejecutar en el script

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 allexporten 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.

información relacionada