シェル組み込みコマンドは大文字で実行できませんが、他のコマンドを実行できるのはなぜですか?

シェル組み込みコマンドは大文字で実行できませんが、他のコマンドを実行できるのはなぜですか?

なぜこれですか?

私がするとき

CD ~/Desktop

デスクトップに移動しません。しかし、これは:

echo "foo
bar" | GREP bar

私にしてください:

bar

ベストアンサー1

別の質問で判断すると、OS Xを使用しているとします。 OSのネイティブHFS +ファイルシステムCygwinまたはFAT32などの大文字と小文字を区別しないファイルシステムを使用するCIOPFS)どこでも。

実際の実行ファイルなので、grepファイルシステム(ディレクトリPATH)を見てください。シェルがまたは/usr/bingrep見つけたら、実行可能ファイルをGREP見つけますgrep

シェル組み込み関数は次のとおりです。いいえファイルシステムで検索:組み込みのため、シェル自体内で(大文字と小文字の区別)文字列比較を介してアクセスできます。

あなたが出会ったのは興味深いケースです。 whilecdは組み込み関数で、アクセス時に大文字と小文字を区別し、CD実行可能ファイルとして検出されます/usr/bin/cd。実行可能ファイルはcd役に立ちません:なぜならcd常に通常のシェル組み込みとして提供される現在のシェル実行環境に影響します。cd、実行可能ファイルがあります。POSIXのためそれにもかかわらず、独自のディレクトリを変更してすぐに終了し、周囲のシェルは開始位置にそのまま残ります。

次のコマンドを使用して試すことができます。type組み込み:

$ type cd
cd is a shell builtin
$ type CD
CD is /usr/bin/CD

typeこのコマンドを実行すると、シェルが何をすべきかを知らせます。実行すると、cd組み込みプログラムにアクセスしますが、CD実行可能ファイルを探します。他の組み込み機能と同様に、組み込み機能と実行可能ファイルもかなり互換性がありますが(try echocdこれは不可能です。

おすすめ記事