Linux 為什麼嚴格區分大小寫?


其實,Linux 本身是無所謂是否區分的,只是 ext4 等文件系統區分而已。

實際上 Linux 上的絕大部分 GNU 軟體在一個不區分大小寫的文件系統上也可以跑。cygwin 系列就是個例子,跑的大部分 gnu 軟體,文件在 Windows 系統下,記錄大小寫但不區分大小寫。

所以答案也許是, Linux 當年最初支持的文件系統剛好是個區分大小寫的文件系統而已。但 Linux 其實是可以用不同的文件系統的。


因為大小寫真的有區別啊


不區分的話,寫不了Erlang……

大小寫根本就不是同一個字元好嗎?能給個不區分大小寫的理由嗎?


因為做起來容易啊


不區分大小寫的文件系統會導致很多問題,比如 foobar.jpg 和 FOOBAR.jpg 可能是不同的兩個文件,或者 PyModule 和 pymodule 是兩個不同的 Python 模塊,但是在不區分大小寫的文件系統里,它們是不可以同時存在的。

區分大小寫的好處顯然易見,而目前的文件系統依然堅持不區分大小寫的原因是要保持向後兼容。比如開發一個軟體,它是在不區分大小寫的文件系統上面開發的,如果把它部署到區分大小寫的文件系統上的話,有可能會出問題;反之亦然。

只是為了兼容,都是歷史的錯,不是因為做起來容易。


Linux 是啥?我只聽說過 linux。


區分大小寫的文件系統會導致很多問題,比如foobar.jpg和FOOBAR.jpg居然是兩個文件,或者PyModule和pymodule竟然可以是兩個不同的Python模塊,在區分大小寫的系統里,它們竟然可以同時存在。

不區分大小寫的好處顯而易見,目前Linux文件系統堅持區分大小寫的原因是要保持向後兼容。比如開發一個軟體,它是在區分大小寫的文件系統上面開發的,那個操蛋的程序員真的寫出了PyModule和pymodule這樣兩個不同的模塊,這個程序部署到不區分大小寫的文件系統上就必然會出問題,反之亦然。

只是為了兼容,都是歷史的錯。明明你創建一個foobar.jpg的時候系統可以提示你已經存在一個FOOBAR.jpg了,可是區分大小寫的文件系統就是允許你直接創建。


給Linus Torvalds大神發電郵問問他這是不是Linux哲學的體現


開始沒想不區分,然後大家寫程序的時候都以區分為默認前提寫,程序在不區分大小寫的地方會出問題。

比如有的代碼包含名字一樣大小寫不同的文件或者目錄,在Win上就不好弄。

而且不區分大小寫得到的好處沒覺得很大,就是輸入的時候少按幾下shift吧。


不區分大小寫的東西簡直是噩夢啊,請看Common Lisp


linux的語言是c語言寫的,c語言是嚴格區分大小寫的,linux命令中大小寫也是完全不同的


推薦閱讀:

Windows 在服務端市場沒人用嗎?
Linux 中 mmap() 函數的內存映射問題理解?
google是如何為全球用戶提供高速高效服務的?
程序崩潰,為啥叫core掉,而不叫崩潰、宕機,是有什麼來歷嗎?
嵌入式方向可以完全不學 Linux 嗎?

TAG:操作系統 | Linux | Linux系統管理 | Unix | Linux開發 |