由于 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
等)