statを呼び出すためにenvを使用することが推奨されるのはなぜですか?

statを呼び出すためにenvを使用することが推奨されるのはなぜですか?

~からcoreutils マニュアル、statコマンド情報

シェルエイリアスと組み込み関数があるため、ネイティブ関数を対話的に使用したりスクリプトで使用したりすると、ここで説明した機能とはstat異なる機能が表示されることがあります。 (つまり)statシェルの干渉を避けるために呼び出されます。envenv stat ...

  1. 「シェルエイリアスと組み込み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'.
    
  2. env(つまり、)を介して呼び出しenv stat ...""シェル干渉を防ぐ"ことができるのはなぜですか?

    次のコマンドはenv、エイリアス、組み込みコマンド、または関数にはできませんか?

    コマンドの前に配置して、envコマンドが外部実行可能ファイルであることを指定できますか?

答え1

  1. Bashにはstat組み込まれていない可能性がありますが、他のシェルには存在する可能性があります。実際、シェルは任意のユーティリティの組み込みバージョンを提供でき、ユーザーはstat自分のシェル機能を使用するか、別のバイナリのエイリアスを呼び出すことでそれを上書きできます。

  2. カント。実行中のユーティリティはenv組み込みできません(cdたとえば、試してみてください)。エイリアスとシェル機能も許可されていません。

マニュアルは、単にユーザーが説明した機能を取得できるようにします。本当に妄想を起こしたい場合は、理想的にはstat絶対パスを使って電話をかけるべきだと言うべきです。これは、GNU coreutilsがオプションの追加エントリである非Linuxシステムではより意味があります(通常/usr/local/gnu/bin、または同様の接頭辞を使用してインストールされgます)。gstatglsgmv

関連情報