O problema apareceu quando o script de construção mudou e faltavam alguns hacks de compatibilidade com cygwin, alguns dos quais eu já tinha conseguido aplicar antes de chegar a este.
Eu finalmente consegui descobrir o verdadeiro culpado, que era que havia uma função no script de construção que (enquanto iterava sobre a variável PATH
) definia a variável de ambiente IFS=:
e não a redefiniu posteriormente. Como bash
usa essa variável para dividir strings em campos, e faz expansão de variável também ao usar variáveis não citadas. Assim, a correção foi fazer SAVEIFS="$IFS"
antes de redefinir IFS
e depois defini-lo novamente por IFS=$SAVEIFS
. Alternativamente, como Gordon Davisson gentilmente explicou, eu poderia ter assegurado que as variáveis fossem usadas sempre com aspas duplas (por exemplo, echo "$bar"
em vez de echo $bar
).
Problema resolvido, não realmente relacionado ao Cygwin de qualquer outra forma que não seja o uso de dois pontos para diferentes propósitos no Windows e no Cygwin e, assim, algumas vezes, é necessário tocar na variável do separador de campo interno. Por essa única razão eu pensei que deveria deixar isso aqui, no caso de alguém se deparar com um problema semelhante. Há também muitas coisas boas sobre todos os aspectos da expansão do shell em USE.