Apakah bash dalam OSX case-insensitive?

79

Apakah perintah bash pada case OSX tidak sensitif? Saya mengetik "yang TR" dan ini menunjukkan / usr / bin / TR, meskipun tidak ada biner seperti itu. Hal yang sama untuk binari lain, ketika dikapitalisasi. Atau Terminal.app mungkin melakukan terjemahan ini? Bagaimana saya mematikannya?

verboze
sumber
Karena penasaran, mengapa Anda ingin mematikan ini?
Sören Kuklau
Ini pertanyaan yang spektakuler. Bash memiliki opsi nocaseglob untuk mengontrol apakah case cocok dalam range, tetapi sedikit tipu daya ini lebih dalam dari normal localedan penyelesaian-abaikan-case / nocaseglob
bmike
3
Alasan saya ingin mematikannya adalah konyol, sungguh. Saya terbiasa dengan sensitivitas huruf saat bekerja di shell. Saya hanya khawatir fitur ini akan membuat saya tersandung. Contoh, saya menulis skrip bash, salah ketik 'lS'; skrip akan berjalan dengan baik di OSX. Saya memindahkannya ke kotak cenTOS saya, dan itu rusak. Memang, ini akan mudah untuk dideteksi dan diperbaiki, tetapi dapat menghindari skenario sepenuhnya jika saya bisa membuat skrip bekerja dengan cara yang sama antara kedua sistem. Saya menemukan ini secara tidak sengaja, dan sejauh ini belum menjadi gangguan, jadi saya mungkin tidak akan melalui latihan mengubah sistem file hanya untuk ini.
verboze
5
Alasan Anda ingin mematikan ini adalah karena ketidakpekaan huruf menyebabkan masalah untuk beberapa aplikasi, seperti SVN. Penggumpalan case-sensitive mungkin berguna, tetapi SVN menjadi sangat sangat bingung jika Anda membuat file bernama "Foo", maka entah bagaimana repositori membuat referensi ke "foo".
Alasan lain untuk menonaktifkan: Saya memiliki skrip ~ / bin / CC di jalur saya sejak sekitar tahun 1980. cc ditambah beberapa default yang menyenangkan. Ini telah bekerja dari UNIX v6 hingga v7, Eunice, BSD 4.1, 4.2, 4.3, SVr4, Xenix, Gould UTX, Linux, cygwin ... dan gagal untuk pertama kalinya pada MacOS, rekursi tak terbatas.
Krazy Glew

Jawaban:

94

Ini sebenarnya adalah fitur dari sistem file disk Anda, bukan bash atau Terminal.app.

HFS + (sistem file Mac) biasanya dikonfigurasikan sebagai case-sensitive tetapi case preserving . Ini berarti bahwa sistem file akan mempertimbangkan foodan FoOsama, tetapi ketika Anda membuat file baru itu akan mengingat huruf mana yang huruf besar dan mana yang tidak.

Ketika Anda memformat disk dengan HFS + Anda dapat memilih apakah sistem file harus case sensitif atau tidak. Jika Anda memilih untuk memformat dengan UFS (Unix FileSystem), itu selalu sensitif huruf, AFAIK.

Untuk memeriksa apakah disk peka terhadap huruf besar-kecil, jalankan:

 diskutil info <device>

Sebagai contoh:

 diskutil info disk0s2

Cari Name:garisnya. Jika membaca sesuatu seperti Mac OS Extended (Case-sensitive, Journaled)itu berarti itu case-sensitive. Jika hanya membaca Mac OS Extended(tanpa Case-sensitive) maka itu hanya menyimpan tetapi tidak case sensitif .

DarkDust
sumber
6
Di luar Unix, kasus pelestarian alam tidaklah biasa. Sebagai contoh, NTFS adalah serupa: tidak case sensitif secara default, tetapi Anda dapat memformatnya begitu. Saya juga berpikir bahwa case insensitive adalah default datang melalui Mac OS 9, tetapi fakta bahwa banyak pengembang Mac dan Windows malas dalam hal ini dan tidak peduli dengan casing yang benar membuatnya hampir tidak mungkin untuk beralih ke case case sebagai default. , itu merusak banyak aplikasi. Datang dari Unix, saya merasa sangat aneh pada awalnya juga.
DarkDust
1
Saya harus mengakui bahwa saya tidak pernah menggunakan Classic Mac OS, jadi menebak-nebak. Either way, ini jawabannya, dan DarkDust mengatakannya lebih baik daripada saya jadi saya pikir ini harus diterima.
stuffe
6
Setiap versi Mac OS telah case-insensitive-but-preserving, untuk alasan kegunaan. Sementara UNIX mendukung presisi (perbandingan byte-by-byte nama file), itu bisa menjadi mimpi buruk bagi pengguna akhir yang secara tidak sengaja menyimpan 'Resume' dan 'Resume' dan kemudian menjadi bingung ketika mereka membuka versi yang salah dan semua perubahan mereka hilang .
Dan Udey
2
Di sisi lain, ini juga bisa menjadi "usability nightmare" ketika mengetik "HEAD" pada hasil baris perintah di program / usr / bin / head (tampilkan baris pertama file) yang dieksekusi alih-alih / usr / local / bin / HEAD (dari LWP: buat permintaan HTTP 'HEAD').
TML
2
Berpikir bahwa untuk setiap karakter huruf besar ada satu huruf kecil yang ekuivalen dan sebaliknya adalah khas dari pemrogram berbahasa Inggris, dan tidak lokal-independen. Saya tidak tahu solusi apa yang telah diadopsi untuk Turki, di mana ada huruf kecil bertitik yang isesuai dengan huruf besar DOTTED İ, sedangkan huruf besar tanpa dot Isesuai dengan huruf kecil DOTLESS ı, tetapi solusi APAPUN akan menjadi buruk. Dan bagaimana dengan orang Jerman ß, sering kali menggunakan huruf kapital 2 Sdetik? Dan aksen yang sering ditinggalkan saat memanfaatkan? Dan ... Sensitivitas kasus tidak menghilangkan semua sakit kepala ini.
Walter Tross
5

Lihatlah filesystem Anda, karena ada variasi case-sensitive dan case-sensitive pada HFS. Defaultnya adalah case-sensitive, dalam hal ini bukan BASH, tetapi sistem file yang mendasarinya. Anda dapat menguji ini dengan memformat stik USB cadangan dengan opsi case case, dan menyalin file lebih dari satu kali untuk mengulang pengujian Anda, dll.

barang
sumber
1

Bash jelas case-sensitive.

Saya baru saja mengetik `whoami 'ke terminal dan tombol caps lock menyala.

Saya mendapat respons yang sama sekali berbeda dari `WHOAMI '.

Saya bisa melihat ada perintah WHOAMI dengan 'yang' tetapi saya tidak dapat menemukannya dengan 'ls'.

peri
sumber
4
Ini bukan shell yang case case, melainkan whoamiprogram itu sendiri. Ini sebenarnya program yang sama id, tetapi memeriksa nama yang dijalankan, dan menggunakan output yang berbeda (setara dengan id -un) jika dijalankan dengan nama "whoami". Itu cek adalah kasus sensitif. Bandingkan output dari id, WHOAMI, WhOaMi, WhoAmI, dll Juga, membandingkan output dari ls -li /usr/bin/whoamivs ls -li /usr/bin/WHOAMI, dan perhatikan bahwa jumlah inode (hal pertama yang tercantum dalam output) adalah sama - mereka dua cara yang berbeda dari menentukan persis file yang sama .
Gordon Davisson