
なぜこれですか?
私がするとき
CD ~/Desktop
デスクトップに移動しません。しかし、これは:
echo "foo
bar" | GREP bar
私にしてください:
bar
答え1
別の質問で判断すると、OS Xを使用しているとします。 OSのネイティブHFS +ファイルシステムCygwinまたはFAT32などの大文字と小文字を区別しないファイルシステムを使用するCIOPFS)どこでも。
実際の実行ファイルなので、grep
ファイルシステム(ディレクトリPATH
)を見てください。シェルがまたは/usr/bin
をgrep
見つけたら、実行可能ファイルを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 echo
)cd
これは不可能です。