我已经在计算机中安装了Cygwin,并将其bin文件夹设置在PATH中。
我可以在Windows命令提示符下使用所有Cygwin命令。
但是,我遇到的一个问题是两个Cygwin Windows都具有命令“ find
”。每当我使用find
时,就会获得Windows版本。
无论如何,我是否可以强制使用find
的Cygwin版本而不是Windows版本?
答案 0 :(得分:0)
确保cygwin可执行文件文件夹/usr/bin
在cmd和bash shell的PATH变量中的cmd可执行文件文件夹c:\Windows\system32
之前,以确保您运行cygwin的find而不是Windows的find命令
在cygwin shell中使用which -a find
列出通过bash shell的PATH变量找到的可执行文件。
在cmd shell中使用where $PATH:find
列出通过cmd shell的PATH变量找到的可执行文件。
答案 1 :(得分:-1)
这是因为find是cmd内置的shell,因此它甚至都不会尝试通过可执行文件搜索路径。
通常,Windows无法理解Cygwin符号链接,但正如https://cygwin.com/cygwin-ug-net/using.html#pathnames-symlinks所解释的,在现代中它可能是 Windows版本可在NTFS文件系统上创建本机Windows符号链接,只要链接不跨文件系统即可。
我会考虑只将其包装在例如您的Cygwin /usr/local/bin
中的批处理脚本中,其名称类似于cygfind.bat
(或您要调用的名称),该脚本明确调用Cygwin的{{ 1}}由find
。
包装器方法的优势在于,如果升级Cygwin并更新C:\path\to\find.exe
,则包装它的批处理脚本仍将透明地工作。
我从来没有亲自尝试过,但是根据this answer,您还可以使用特殊的find
变量来覆盖cmd内置函数。