OSXのbashは大文字と小文字を区別しませんか?


79

OSXのbashコマンドは大文字と小文字を区別しませんか?「which TR」と入力すると、/ usr / bin / TRと表示されますが、そのようなバイナリはありません。大文字の場合、他のバイナリでも同じことが言えます。または、Terminal.appはおそらくこの翻訳をしていますか?これをオフにするにはどうすればよいですか?


好奇心から、なぜこれをオフにしたいですか?
ソーレンククラウ

これは素晴らしい質問です。bashは有するnocaseglobの範囲の場合が一致するかどうかを制御するオプションが、しかし、詐欺のこの小さなビットは、通常よりも深いlocale完了-無視ケース / nocaseglob
bmike

3
私がそれをオフにしたかった理由は、本当にばかげています。私は、シェルで作業するときに大文字と小文字を区別することに慣れています。この機能が私をつまずかせるのではないかと心配しています。たとえば、「lS」と誤入力してbashスクリプトを作成します。スクリプトはOSXで正常に実行されます。cenTOSボックスに移動すると壊れます。確かに、これは簡単に検出および修正できますが、2つのシステム間でスクリプトを同じように機能させ続けることができれば、シナリオを完全に回避できます。私は偶然これを発見しましたが、今のところ迷惑ではないので、おそらくこれだけのためにファイルシステムを変更する演習は行わないでしょう。
11

5
これをオフにする理由は、大文字と小文字を区別しないとSVNなどの一部のアプリで問題が発生するためです。大文字と小文字を区別しないグロビングは便利ですが、「Foo」というファイルを作成し、リポジトリが「foo」への参照を作成すると、SVNは非常に混乱します。

無効にするもう1つの理由:1980年頃からパスにスクリプト〜/ bin / CCがありました。ccといくつかの快適なデフォルト。UNIX v6からv7まで、Eunice、BSD 4.1、4.2、4.3、SVr4、Xenix、Gould UTX、Linux、cygwin ...で動作し、MacOSで初めて、無限再帰に失敗しました。
クレイジーグリュー

回答:


94

これは実際にはディスクのファイルシステムの機能であり、bashやTerminal.appではありません。

HFS +(Macのファイルシステム)は、通常、なるように構成されている大文字と小文字を区別しませんが、保存ケース。これは、ファイルシステムが検討することを意味fooし、FoO同じように、しかし、あなたは新しいファイルを作成するとき、それは大文字場所とされなかったその手紙を覚えてます。

HFS +でディスクをフォーマットするとき、ファイルシステムで大文字と小文字を区別するかどうかを選択できます。UFS(Unix FileSystem)でフォーマットすることを選択した場合、常に大文字と小文字が区別されます。

ディスクで大文字と小文字が区別されるかどうかを確認するには、次を実行します。

 diskutil info <device>

例えば:

 diskutil info disk0s2

Name:行を探します。Mac OS Extended (Case-sensitive, Journaled)それがそのような何かを読む場合、大文字と小文字が区別されることを意味します。Mac OS Extended(なしでCase-sensitive)だけを読み取る場合は、大文字と小文字を区別せず、大文字と小文字を区別するだけです。


6
Unix以外では、性質を保持するケースはそれほど珍しいことではありません。たとえば、NTFSも同様です。デフォルトでは大文字と小文字は区別されませんが、フォーマットすることができます。また、大文字と小文字を区別しないデフォルトはMac OS 9経由で来たと思いますが、多くのMacおよびWindows開発者はこの点で怠け者であり、正しい大文字小文字を気にしないので、デフォルトとして大文字と小文字を区別するように切り替えることはほとんど不可能です、それは多くのアプリを壊します。Unixから来て、私も最初は非常に奇妙だと感じました。
-DarkDust

1
Classic Mac OSを使用したことがないので、推測していました。いずれにせよ、これが答えであり、DarkDustは私よりも優れているので、これは受け入れられると思います。
スタッフィング

6
Mac OSのすべてのバージョンは、使いやすさの理由から、大文字と小文字を区別せずに保存しています。UNIXは精度(ファイル名のバイト単位の比較)を優先しますが、誤って「再開」と「再開」を保存し、間違ったバージョンを開いてすべての変更がなくなったときに混乱するエンドユーザーにとっては使いやすさの悪夢です。
ダンUdey

2
一方、コマンドラインで「HEAD」と入力すると、/ usr / localの代わりにプログラム/ usr / bin / head(ファイルの最初の行を表示)が実行されると、「使いやすさの悪夢」になる可能性あります。 / bin / HEAD(LWPから:HTTP 'HEAD'要求を作成します)。
TML

2
すべての大文字に対応する小文字が1つあり、その逆は英語を話すプログラマーの典型であり、ロケールに依存しないと考えます。私は、点線の小文字がある場合、トルコのために採用されているものを解決分からないiDOTTEDの大文字に対応するİドットなし、大文字は一方で、IDOTLESSの小文字に対応ıしますが、解決策は悪いだろう。そしてß、多くの場合2 S秒で大文字になっているドイツ人はどうですか?そして、大文字にするときにしばしば省略されるアクセントは?そして...大文字小文字の区別は、これらの頭痛のすべてを取り除きます。
ウォルタートロス

5

HFSには大文字と小文字を区別するものと区別しないものがありますので、ファイルシステムを見てください。デフォルトでは大文字と小文字は区別されません。その場合、BASHの場合ではなく、基礎となるファイルシステムになります。大文字と小文字を区別するオプションを使用して予備のUSBスティックをフォーマットし、ファイルをコピーしてテストを繰り返すなどして、これをテストできます。



1

Bashは間違いなく大文字と小文字を区別します。

ターミナルに「whoami」と入力すると、Caps Lockボタンがオンになりました。

「WHOAMI」とはまったく異なる反応がありました。

「これ」でWHOAMIコマンドがあるのがわかりますが、「ls」では見つかりません。


4
これは大文字と小文字を区別するシェルではなく、whoamiプログラム自体です。これは実際にはと同じプログラムですがidid -un実行された名前を確認し、「whoami」という名前で実行された場合は異なる出力(と同等)を使用します。このチェックでは大文字と小文字が区別されます。出力を比較しidWHOAMIWhOaMiWhoAmI、など。また、出力の比較ls -li /usr/bin/whoami対をls -li /usr/bin/WHOAMI、およびiノード番号(出力にリストされた最初のもの)が同じであることに注意してください-彼らはまったく同じファイルを指定する2つの異なる方法です。
ゴードンデイヴィソン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.