linux 文件結構中,有一個很神奇的目錄 —— /usr。之前一直沒有怎麼關注過它,反正程序都是安裝在裡邊的,也沒有什麼值得追根溯源的東西。直到有一天 fedora 要簡化整個文件系統體系,看到討論才想到,usr 到底是什麼的縮寫呢,它又是怎麼來的呢?討論中,大部分觀點認為:
1.usr 是 unix system resources 的縮寫;
2.usr 是 user 的縮寫;
3.usr 是 unix software resources 的縮寫。
根據常識判斷,是 user 縮寫的可能性不大,因為和 /home 沖突了嘛。不過是 system resources 還是 software resources 的縮寫還真不好說。特此查了好多東西,卻發現竟然連 wikipedia 也模稜兩可。/usr 是linux系統核心所在,包含了所有的共享文件。
它是 unix 系統中最重要的目錄之一,涵蓋了二進制文件,各種文檔,各種頭文件,x,還有各種庫文件;還有諸多程序,例如 ftp,telnet 等等。
曾經的 /usr 還是用戶的家目錄,存放著各種用戶文件 —— 現在已經被 /home 取代了(例如 /usr/someone 已經改為 /home/someone)。
現代的 /usr 只專門存放各種程序和數據,用戶目錄已經轉移。雖然 /usr 名稱未改,不過其含義已經從“用戶目錄”變成了“unix 系統資源”目錄。值得注意的是,在一些 unix 系統上,仍然把 /usr/someone 當做用戶家目錄,如 Minix。
/usr 文件系統經常很大,因為所有程序安裝在這裡. /usr 裡的所有文件一般來自Linux distribution;本地安裝的程序和其他東西在/usr/local 下.這樣可能在升級新版系統或新distribution時無須重新安裝全部程序.
由於/usr中的文件不和特定的計算機相關,也不會在通常使用中修改,因此可以通過網絡共享這個目錄(文件系統),這樣,當管理員安裝了新的軟件之後,所有共享這一文件系統的計算機均可以使用新的軟件。
至此,真相大白。看來就像前一陣子的 /var/run 移到 /run 一樣。
真的是不看不知道,一看嚇一跳呀。原來 linux 幾經進化,好多目錄的誕生和用途已經產生了根本的變化。
/usr 目錄結構
/usr/bin : 所有可執行文件,如 gcc,firefox 等(指不包含在 /sbin 和 /bin 內的);
/usr/include : 各種頭文件,編譯文件等時需要使用;
/usr/include/’package-name’ : 程序特定的頭文件;
/usr/lib : 所以可執行文件所需要的庫文件;
/usr/local : 這裡主要存放那些手動安裝的軟件,即 不是通過“新立得”或apt-get安裝的軟件 。 它和/usr目錄具有相類似的目錄結構 。讓軟件包管理器來管理/usr目錄,而把自定義的腳本(scripts)放到/usr/local目錄下面,我想這應該是個不錯的主意。
/usr/X11R6 : x 系統的二進制文件,庫文件,文檔,字體等。它不等同於 /usr 的作用,只有 x 才能調用這些庫文件等,其他程序不讀取或者使用。因為 linux 沒有原生圖形界面,而且 linux 大部分情況下是 for server 的,所以圖形界面沒有意義;其中 X11R6 代表 version 11 release 6;
/usr/X11R6/bin : x 的二進制文件,包含運行 x 的必須文件;
/usr/X11R6/include : x 相關的頭文件;
/usr/X11R6/lib : x 庫文件;
/usr/X11R6/lib/modules : x 的模塊,啟動時加載。缺少 video4linux, DRI and GLX 和 輸入輸出設備 模塊,將工作不正常;
/usr/X11R6/lib/X11/fonts : x font server 的字體文件;
/usr/doc : 文檔。實際是 /usr/share/doc 的軟鏈接;
/usr/etc : 一個極少用到的配置文件存放地;
/usr/games : 曾經包含游戲等文件,現在很少用到;
/usr/info : 系統相關信息,是 /usr/share/info 的軟鏈接;
/usr/man : man 手冊,已經移至 /usr/share/man;
/usr/sbin : 類似 /sbin,root 可以執行。但此目錄不包含在環境變量 $PATH 中,它包含的程序類似於 chroot, useradd, in.tftpd and pppconfig;
/usr/share : 它包含了各種程序間的共享文件,如字體,圖標,文檔等。(/usr/local 對應的目錄是 /usr/loca/share);
/usr/share/doc : 類似應用程序的 man 手冊。它包含程序的說明文件,默認配置文件等;
/usr/share/info : 不常用,已經被 man 代替;
/usr/share/man : app 的 manual;
/usr/share/icons : 應用程序的圖標等文件,分為 png,svg 等多種格式;
/usr/share/fonts : 字體文件,系統范圍內可使用,~/.fonts 僅當前用戶可用;
/usr/src : linux 內核的源碼和說明文檔等;
/usr/src/linux : linux 源代碼;
/usr/src/linux/.config : 內核編譯過程產生的文件;通常由命令 ‘make config’ , ‘make menuconfig’ 或 ‘make xconfig’ 執行後產生;
/usr/src/linux/.depend, /usr/src/linux/.hdepend : ‘make dep’ 檢測編譯依賴時需要的文件,由 /usr/src/linux/.config 產生;
/usr/src/linux/COPYING : GNU license;
/usr/src/linux/Makefile : 編譯內核所需的 Makefile;
/usr/src/linux/Rules.make : 當有多個 Makefile 時,根據它的規則執行 make;
/usr/tmp : 已經被眾多發行版拋棄的臨時文件夾。