我运行了一个包含 awk 调用的 .ksh。awk.exe 及其快捷方式 awk 位于 /bin/awk 中,/bin 位于 PATH 环境变量中。但是当我尝试启动 awk 时,出现了以下错误消息:
bash: /usr/bin/awk: no such file or directory
为什么 bash 没有在 /bin 文件夹中寻找它?
编辑:tar 具有相同的权限,tar.exe 位于 /bin 中,并且可以在 /usr/bin/ 中列出,与 awk 完全相同。Tar 工作正常,而 awk 则不行。
答案1
ksh 脚本是否明确定义了 awk 的路径? 可以通过变量 ( AWK=/usr/bin/awk
,由 调用$AWK
) 来实现。 也尝试运行which awk
和alias awk
。
编辑
Cygwin 安装过程实际上设置/usr/bin
为 的硬链接/bin
。(执行ls -li /usr/
和ls -li /
,您会看到bin
文件夹具有相同的 inode 编号。此外,在 Windows 资源管理器中浏览 /usr/bin 文件夹,您会看到它是空的。)
您的 PATH 可能没有问题,但可能/usr/bin
之前就已经存在/bin
,因此它首先通过该路线找到 awk。
看着你的上一个问题,我认为您可能在这里遇到了类似的快捷方式相关问题。我尝试在 Windows 中重命名我的awk.exe
,dawk.exe
然后设置awk.exe
指向它的快捷方式。awk
然后运行,结果出现了您看到的相同错误。不过,我不得不强制解决这个问题;我认为您的 Cygwin 安装可能有点问题,但很难说是怎么回事。您是否从其他二进制文件中遇到过类似的错误?
答案2
当您处于 korn shell 中时,您应该尝试 echo $PATH。它将告诉您用于查找程序的搜索路径。
艾伦