在 linux 文件結構中,有一個很神奇的目錄 —— /usr。
討論中,大部分觀點認為:
usr 是 unix system resources 的縮寫;
usr 是 user 的縮寫;
usr 是 unix software resources 的縮寫。
根據常識判斷,是 user 縮寫的可能性不大,因為和 /home 沖突了嘛。不過是 system resources 還是 software resources 的縮寫還真不好說。特此查了好多東西,卻發現竟然連 wikipedia 也模棱兩可。
后來終於找到了 相關的文檔和介紹。(via,cache)
/usr usually contains by far the largest share of data on a system. Hence, this is one of the most important directories in the system as it contains all the user binaries, their documentation, libraries, header files, etc…. X and its supporting libraries can be found here. User programs like telnet, ftp, etc…. are also placed here. In the original Unix implementations, /usr was where the home directories of the users were placed (that is to say, /usr/someone was then the directory now known as /home/someone). In current Unices, /usr is where user-land programs and data (as opposed to ’system land’ programs and data) are. The name hasn’t changed, but it’s meaning has narrowed and lengthened from “everything user related” to “user usable programs and data”. As such, some people may now refer to this directory as meaning ‘User System Resources’ and not ‘user’ as was originally intended.(via 1,2)
/usr 是系統核心所在,包含了所有的共享文件。它是 unix 系統中最重要的目錄之一,涵蓋了二進制文件,各種文檔,各種頭文件,x,還有各種庫文件;還有諸多程序,例如 ftp,telnet 等等。
曾經的 /usr 還是用戶的家目錄,存放着各種用戶文件 —— 現在已經被 /home 取代了(例如 /usr/someone 已經改為 /home/someone)。現代的 /usr 只專門存放各種程序和數據,用戶目錄已經轉移。雖然 /usr 名稱未改,不過其含義已經從“用戶目錄”變成了“unix 系統資源”目錄。值得注意的是,在一些 unix 系統上,仍然把 /usr/someone 當做用戶家目錄,如 Minix。
至此,真相大白。看來就像前一陣子的 /var/run 移到 /run 一樣。
真的是不看不知道,一看嚇一跳呀。原來 linux 幾經進化,好多目錄的誕生和用途已經產生了根本的變化。歷史車輪在前進,長江后浪推前浪,正所謂:學習歷史,收獲真知;盡心竭力,前進不止。
/usr 目錄結構:
/usr/bin : 所有可執行文件,如 gcc,firefox 等(指不包含在 /sbin 和 /bin 內的);
/usr/include : 各種頭文件,編譯文件等時需要使用;
/usr/include/’package-name’ : 程序特定的頭文件;
/usr/lib : 所以可執行文件所需要的庫文件;
/usr/local : /usr 通常只包含系統發行時自帶的程序,而 /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 : 已經被眾多發行版拋棄的臨時文件夾。