【发布时间】:2022-10-17 13:10:43
【问题描述】:
我正在使用 UnxUtils 在 Windows CMD 中运行 Bash 命令。 Bash 文件存储在C:\Users\username\win_bash\。我已将该文件夹添加到 Windows PATH 中,因此无论我在哪个文件夹中,我都可以从 cmd 访问它。我想覆盖默认的 Windows echo 命令。目前我可以通过指定 Bash echo 命令的整个路径来做到这一点:C:\Users\win_bash\echo.exe。我可以将 Bash 的 echo 设为默认值,这样我就可以在没有命令的整个路径的情况下键入 echo 吗?
【问题讨论】:
-
在 bash 中,
echo是内置的。由于 POSIX 原因,它也存在和外部程序,但除非明确调用,否则该版本实际上从未使用过。 -
好吧,可以使用
%SystemRoot%\System32\doskey.exe echo=C:\Users\win_bash\echo.exe $*定义运行echo.exe,并将参数传递给这个可执行文件,而不是运行cmd.exe的内部命令echo。但是内部命令echo在参数解析中与运行可执行文件不同,因为字符串包含空格或其中一个字符()[]{}^=;!'+,`~不得包含在"中,这是将此类字符串传递给可执行文件以运行所必需的通过cmd.exe。只有像&<>|这样的字符才能通过命令echo输出,必须使用^进行转义。 -
因此,我预计将
cmd.exe的内部命令echo替换为doskey宏会遇到很多麻烦,即使仅针对命令提示符窗口或某些批处理文件这样做也是如此。但是,您可以根据需要使用它,并且它至少适用于您认为使用echo.exe比使用 Windows 命令echo更好的用例。
标签: bash batch-file cmd