Eu tenho que
export MYAPP=some_executable
em my_fun.sh
.
Em seguida, o outro script lê o valor da variável.
Estou usando o Msys2 do PortableApps no Win 10. A resposta a esta pergunta (ou seja, identificação e solução do problema) pode estar relacionada à parte de uso do Unix / Linux, ou à sua "adaptação" ao Windows via Msys2. Eu não sei com antecedência (caso contrário, eu provavelmente teria resolvido isso sozinho!), Então eu tinha postado antes (agora removido) uma pergunta semelhante em outro site da SE , que alcança um público diferente.
Eu tenho uma função shell definida em my_fun.sh
as
MYAPP=some_executable
function myfun() { echo "MYAPP=${MYAPP}" && ${MYAPP} "$@" ; }
, ou seja, some_executable
aceita opções e parâmetros.
Eu posso correr na linha de comando
$ some_executable -3 input.dat output.dat
Agora, se eu executar a partir de um script de shell myscript.sh
comm="myfun -3 input.dat output.dat"
echo ${comm}
eval ${comm}
(com echo
eu me certifico de que a linha é o que eu quero)
Eu recebo
./myscript.sh: line 8: myfun: command not found
Se eu fizer export -f myfun
e, em seguida, ./myscript.sh
Eu começo a ficar
MYAPP=
environment: -3: command not found
que mostra a fonte do problema (graças ao comentário de Kamil M).
Em uma caixa do Ubuntu, antes de export -f ...
, recebo o mesmo erro acima.
Mas export
corrige o problema.
Qual é a causa disso? É relacionado ao uso puro do Linux / Bash, ou é análise, expansão de shell, herança de shell, etc., sob Msys2 ligeiramente diferente? Como faço para corrigir isso, de forma que o mesmo script funcione com Msys2 e Ubuntu?
Relacionados: link
Eu tenho que
export MYAPP=some_executable
em my_fun.sh
.
Em seguida, o outro script lê o valor da variável.