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 : 已經被眾多發行版拋棄的臨時資料夾。