Coreutils
為什麼建議使用 env 呼叫 stat?
由於 shell 別名和內置
stat
函式,以stat
互動方式或在腳本中使用未經修飾的函式可能會獲得與此處描述的不同的功能。env
通過(ie, )呼叫它env stat ...
以避免來自 shell 的干擾。
- “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'.
- 為什麼可以“通過
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
)