Cygwin gawk não canaliza quando chamado explicitamente

Cygwin gawk não canaliza quando chamado explicitamente

Essa é a melhor descrição que consigo pensar, peço desculpas se for um pouco esotérico.

Tenho o cygwin instalado no Win 10, Build 16299, mas está instalado com a opção de não administrador; não há opção de instalar como administrador neste PC.

Ao executar a linha a seguir, ela é executada quando o gawk é encontrado usando o PATH, mas não quando eu digo explicitamente onde encontrar o executável. Alguma sugestão?

gawk "BEGIN { print \"echo Hello mum\" | \"./cygwin/sh\" }"
Hello mum

.\cygwin\gawk "BEGIN { print \"echo Hello mum\" | \"./cygwin/sh\" }"
gawk: cmd. line:1: fatal: can't open pipe `./cygwin/sh' for output (No such file or directory)

O diretório cygwin é um subconjunto de comandos cygwin junto com todas as DLLs copiadas de \cygwin64\bin\

Responder1

Suponha que você execute o comando no diretório `/home/user'.

Quando você executa gawk, $CWD (diretório de trabalho atual) é definido como /home/user.

Quando você executa .\cygwin\gawk, $CWD é definido como /home/user/cygwin. Neste caso ./cygwin/shaponta para /home/user/cygwin/cygwin.

Vamos tentar isso:

.\cygwin\gawk "BEGIN { print \"echo Hello mum\" | \"./sh\" }"

informação relacionada