Cygwin gawk は明示的に呼び出されるとパイプしません

Cygwin gawk は明示的に呼び出されるとパイプしません

これが私が思いつく最良の説明ですが、少し難解だったらごめんなさい。

Win 10、ビルド 16299 に cygwin をインストールしましたが、非管理者オプションでインストールされており、この PC に管理者としてインストールするオプションはありません。

次の行を実行すると、PATH を使用して gawk が見つかった場合は実行されますが、実行可能ファイルの場所を明示的に指定した場合は実行されません。何か提案はありますか?

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)

cygwin ディレクトリは、\cygwin64\bin\ からコピーされたすべての dll とともに、cygwin コマンドのサブセットです。

答え1

ディレクトリ `/home/user' からコマンドを実行するとします。

を実行するとgawk、$CWD (現在の作業ディレクトリ) が に設定されます/home/user

を実行すると.\cygwin\gawk、$CWD は に設定されます/home/user/cygwin。この場合は./cygwin/shを指します/home/user/cygwin/cygwin

これを試してみましょう:

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

関連情報