typeコマンドは、実行可能なコマンドとシェルスクリプトを区別できません。

typeコマンドは、実行可能なコマンドとシェルスクリプトを区別できません。

だから本を読んでいました。Linuxのコマンドライン、コマンドには4つのタイプがあることがわかります。

(1) 実行可能プログラム

(2) シェル内蔵機能

(3) シェル機能(シェルスクリプト)

(4) エイリアス

次に、コマンドのタイプを識別するためにそのtypeコマンドを使用できると言います。

しかし、このtypeコマンドはシェル機能(シェルスクリプト)と実行可能なコマンドを区別できないことがわかりました。

たとえば、

type cp
(will output: cp is /bin/cp)

type bzexe
(will output: bzexe is /bin/bzexe)

しかし、私たちは皆、それがcp実行可能なプログラムであり、bzexeシェルスクリプトであることを知っています。

今私の質問は:この2つを区別するためにどのコマンドを使用できますか?

私はこのコマンドを知っていfileてうまくいきます。これが唯一の解決策ですか?

ベストアンサー1

シェルスクリプトはい実行可能なプログラムです。だからtype一つだそうです。シェルスクリプトは、Linux経由で実行されるPerlスクリプト、Pythonスクリプト、デフォルトのELF実行可能ファイル、Qemuクロスアーキテクチャ実行可能ファイルなどの実行可能なコマンドです。binfmt_miscすべての実行可能ファイルは、使用するインタプリタに関係なく実行可能なコマンドです。

私の例のリストからわかるように、「スクリプト化された」と「スクリプトされていない」の間の境界はあいまいです。シェルボーンスクリプトですが、ネイティブコードでもスクリプトでもない実行ファイルもあります。

プログラムを実行するときにどの言語で書かれたかは問題ではありません。だからtypeこの事実を言っても役に立ちません。これがすることは、typeシェルの観点からどのような種類のコマンドなのかを教えるだけです。

シェルスクリプトは関数とは異なります。関数はシェルの内部で実行され、シェル環境を変更できます。シェルスクリプトは別のプログラムです。この別のプログラムは、現在実行中のプログラムと同じ言語で書くことができますが、これはただ偶然です。

おすすめ記事