シェルの組み込みプログラムか外部プログラムか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 シリーズシステムには、which
PATH から実行可能ファイルを検索するシェルスクリプトがあります。したがって、シェルが組み込み実行可能ファイルを使用しても、外部実行可能ファイルの名前を提供します。
コマンドが組み込みコマンドとしてのみ使用可能な場合は、which
何も返されません。
$ type help
help is a shell builtin
$ which help
$
それでは、見てみましょうcat
。
$ type cat
cat is hashed (/bin/cat)
$ which cat
/bin/cat
cat
組み込みシェルではなく外部実行可能ファイルです。