gpt4 book ai didi

linux - 使用完整路径 "/bin/..."调用可执行文件是否可移植?

转载 作者:太空宇宙 更新时间:2023-11-04 09:25:43 24 4
gpt4 key购买 nike

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

我发现从 Makefile 或在 shell 脚本中将此程序调用为 /bin/find 在 Windows 和(我的)Linux 上都有效。最重要的是 - 这样做总是从 MSYS2 调用 find.exe,无论 PATH 中文件夹的顺序是什么。所以我想知道 - 以这种方式调用 find 是否可以,或者它不是可移植的,我只是很幸运它适合我?

最佳答案

将其称为 /usr/bin/find 可能更便于携带。例如,在 Fedora 上,/bin 实际上是 /usr/bin 的符号链接(symbolic link),因此两者都有效:

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

关于linux - 使用完整路径 "/bin/..."调用可执行文件是否可移植?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36701733/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com