0

对于我正在编写的 RTOS(http://www.distortos.org),我需要find作为构建配置过程的一部分(从make menuconfig目标)运行。对于 Windows,我假设用户安装了 MSYS2,因此find.exe可用。这个特定文件的唯一问题是 Windows 也有这样的文件C:/Windows/system32(据说它接近grep)。因此,根据PATH环境变量中文件夹的顺序,如果尝试仅通过名称调用文件,您会得到一个或另一个。

我发现/bin/findMakefile或在 shell 脚本中调用这个程序在 Windows 和(我的)Linux 上都有效。最重要的是 - 这样做总是find.exe从 MSYS2 调用,无论PATH. 所以我想知道 - 以find这种方式调用是否可以,或者它不是便携式的,我很幸运它对我有用?

4

2 回答 2

1

将其称为/usr/bin/find. 例如,在 Fedora/bin上实际上是一个指向 的符号链接/usr/bin,所以两者都可以:

bash-4.3$ ls -l /bin/find
-rwxr-xr-x. 1 root root 222608 Dec 28 18:26 /bin/find
bash-4.3$ ls -l /usr/bin/find
-rwxr-xr-x. 1 root root 222608 Dec 28 18:26 /usr/bin/find

但在最近的 Ubuntu 上:

root@69ca68fbe5c0:/# ls -l /bin/find
ls: cannot access /bin/find: No such file or directory
root@69ca68fbe5c0:/# ls -l /usr/bin/find
-rwxr-xr-x. 1 root root 229992 Jan  6  2014 /usr/bin/find
于 2016-04-18T18:37:49.847 回答
1

我建议不要硬编码路径find,而是指示 Windows 用户他们必须在 MSYS2 环境中运行您的脚本。MSYS2 会将其自己的 bin 目录放在路径开头附近,以便find始终获取 MSYS2 版本而不是 Microsoft 版本。

如果您对路径进行硬编码,find那么您会使事情变得比需要的更脆弱。

于 2016-04-18T19:18:55.060 回答