在 Cygwin 中从 PATH 运行 .bat 文件

在 Cygwin 中从 PATH 运行 .bat 文件

直接调用时,在 Cygwin(bash 或 zsh)中运行 .bat 文件是可行的。

但是,如果我位于不同的文件夹并依靠 PATH 变量调用 .bat 文件,它会说command not found

如果我在环境 PATH 中有一个 .bat 文件,我该如何让 Cygwin 从任何目录执行它?这适用于 .exe 文件,但显然不适用于 .bat 文件。

答案1

听起来你需要更具体一点。适用于BAT文件EXE 文件。可能发生的情况是,您恰好使用了路径中较早的某个文件已占用的名称。

如果有 PATH=C:\1;C:\2;C:\3

然后你创建一个 C:\3\foo.BAT

但是已经有一个 C:\1\foo.EXE

然后当您输入“foo”时,它会先找到 c:\1\foo.exe,然后再找到 c:\3\foo.bat。

这个问题时常困扰着我。

我发现“which”命令在这些情况下很有帮助。

答案2

Cygwin 能够执行.exe.batCygwin 的可执行属性或者魔法饼干MZfor.exe:\nfor .bat)在文件中。

注意属性x

# printf '@echo OK' >bad.bat
# printf ':\n@echo OK' >good.bat
# ls -l *.bat
-rw-r--r--  bad.bat
-rwxr-xr-x  good.bat

现在good.bat可以执行(根据 Cygwin)甚至可以通过 Bash 中的 TAB 完成。

如果您的挂载点支持,acl您可以将任何文件标记为可执行文件:

chmod a+x my.bat

相关内容