![为什么建议使用 env 调用 stat?](https://linux22.com/image/101960/%E4%B8%BA%E4%BB%80%E4%B9%88%E5%BB%BA%E8%AE%AE%E4%BD%BF%E7%94%A8%20env%20%E8%B0%83%E7%94%A8%20stat%EF%BC%9F.png)
由于 shell 别名和内置函数的存在,以交互方式或在脚本中
stat
使用原始函数 可能会获得与此处描述的功能不同的功能。通过(即)stat
调用它以避免来自 shell 的干扰。env
env stat ...
“shell 别名和内置
stat
函数”是什么意思?在 bash 中,我没有找到名为的别名或内置函数或函数stat
$ whereis stat stat: /usr/bin/stat /usr/bin/X11/stat /usr/share/man/man1/stat.1.gz /usr/share/man/man2/stat.2.gz $ help stat bash: help: no help topics match `stat'. Try `help help' or `man -k stat' or `info stat'.
为什么“Invoke it via
env
(ie,env stat ...
)”可以“避免shell的干扰”?后面的命令不能
env
是别名、内置命令或函数吗?放在
env
命令前面是否可以指定该命令是外部可执行文件?
答案1
Bash 可能没有
stat
内置的,但其他 shell 可能有。事实上,shell 可以提供它想要的任何实用程序的内置版本,并且用户可以stat
使用自己的 shell 函数或调用另一个二进制文件的别名进行覆盖。不可以。执行的实用程序
env
不能是内置的(cd
例如尝试一下)。同样不允许使用别名和 shell 函数。
该手册只是试图确保用户获得所描述的功能。在我看来,如果它真的想变得偏执,它还应该提到您理想情况下应该stat
使用其绝对路径进行调用。这在非 Linux 系统上更有意义,其中 GNU coreutils 是可选的额外组件(通常安装在/usr/local/gnu/bin
或类似的位置,或带有g
前缀,例如gstat
、gls
等gmv
)