mantenha o ambiente ao executar no script

mantenha o ambiente ao executar no script

Eu tenho um script bash que deve executar vários comandos. Os comandos funcionam bem quando inseridos em um terminal, mas quando tento executá-los de dentro do script eles não funcionam, então presumo que seja algo específico do ambiente.

No roteiro eu tenho

exec "$cmd"

e não funciona, mas se eu copiar o conteúdo de $ cmd e colar em um terminal, ele funciona bem.

Como mantenho o ambiente atual ao executar o script? Ou você tem alguma outra ideia do que possa ser?

Responder1

Coloque o comando em uma matriz.

arr=(foo bar baz quux)
exec "${arr[@]}"

Responder2

Digite set -o allexportno topo do seu script bash. Isso deve exportar automaticamente todas as variáveis ​​que você definir. (Observe que isso é considerado um estilo ruim; seria melhor exportar apenas as variáveis ​​adequadas).

Responder3

Se todo o comando for executado no mesmo diretório, você pode usar

cd /d $Location

no início do script para definir o local onde os comandos serão executados.

cd – Este é o comando de mudança de diretório. /d - Essa opção faz com que o cd altere a unidade e o diretório ao mesmo tempo.

se você quisesse que o comando fosse executado, digamos, D:\scripts sem o /d você precisaria

D:
cd \scripts

mas com o comando acima você pode fazer isso em uma linha

cd /d D:\scripts

-Editar novamente-

Peço desculpas, diz claramente BASH, mas li em BATCH por algum motivo. será mais cuidadoso no futuro.

informação relacionada