"cat"は組み込みシェルですか、それとも外部プログラムですか?

シェルの組み込みプログラムか外部プログラムかtypeを確認するためにコマンドを使用すると、次の出力が表示されます。cat

-$ type cat
cat is hashed (/bin/cat)
-$

これがcat外部プログラムであることを意味しますか/bin/cat

下の出力を確認してみると、プログラムであると同時にプログラムであるechoことを確認するので混乱します。built-in/bin/echo

-$ type echo
echo is a shell builtin
-$ which echo
/bin/echo
-$ 

/bin/cat/bin/echoしたがって、echoがまだ組み込まれているため、必ずしも外部プログラムを意味するロジックを使用することはできません。

catそれでは、それが何であるかをどうやって知ることができますか?内部または外部?

ベストアンサー1

typeシェルが何を使うかを教えてくれます。たとえば、

$ type echo
echo is a shell builtin
$ type /bin/echo
/bin/echo is /bin/echo

これは、bashプロンプトに入力すると、組み込みのechoアイテムが得られることを意味します。のようにパスを指定すると、/bin/echo外部コマンドを受け取ります。

which対照的に、外部プログラムには、シェルが実行する操作に関する特別な知識はありません。 Debian シリーズシステムには、whichPATH から実行可能ファイルを検索するシェルスクリプトがあります。したがって、シェルが組み込み実行可能ファイルを使用しても、外部実行可能ファイルの名前を提供します。

コマンドが組み込みコマンドとしてのみ使用可能な場合は、which何も返されません。

$ type help
help is a shell builtin
$ which help
$ 

それでは、見てみましょうcat

$ type cat
cat is hashed (/bin/cat)
$ which cat
/bin/cat

cat組み込みシェルではなく外部実行可能ファイルです。

おすすめ記事