![Cygwin gawk 在明确调用时不会进行管道传输](https://linux22.com/image/1592128/Cygwin%20gawk%20%E5%9C%A8%E6%98%8E%E7%A1%AE%E8%B0%83%E7%94%A8%E6%97%B6%E4%B8%8D%E4%BC%9A%E8%BF%9B%E8%A1%8C%E7%AE%A1%E9%81%93%E4%BC%A0%E8%BE%93.png)
这是我能想到的最好的描述,如果有点深奥的话请原谅。
我在 Win 10,Build 16299 上安装了 cygwin,但它是使用非管理员选项安装的;这台电脑上没有以管理员身份安装的选项。
执行以下行时,如果使用 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 目录是 cygwin 命令的子集,以及从 \cygwin64\bin\ 复制的所有 dll
答案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\" }"