由于 shell 别名和内置
stat函数,以stat交互方式或在脚本中使用未修饰的 函数可能会获得与此处描述的功能不同的功能。通过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'.
Run Code Online (Sandbox Code Playgroud)为什么“通过env(即env stat ...)调用它”可以“避免来自shell的干扰”?
后面的命令env不能是别名、内置命令或函数吗?
放在env命令前面是一种指定命令是外部可执行文件的方法吗?
Bash 可能没有stat内置,但其他 shell 可能有。事实上,shell 可以提供它想要的任何实用程序的内置版本,并且用户可以stat使用他们自己的 shell 函数或别名调用另一个二进制文件来覆盖。
不。env执行的实用程序不能是内置的(cd例如尝试)。同样不允许使用别名和 shell 函数。
该手册只是试图确保用户获得所描述的功能。在我看来,如果它真的想变得偏执,还应该提到你理想情况下应该stat用它的绝对路径调用。这使得在那里的GNU的coreutils是一个可选的额外的(通常安装在非Linux系统更有意义,/usr/local/gnu/bin或诸如此类的地方,或用g前缀,例如gstat,gls,gmv等)