在 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 : 已經被衆多發行版拋棄的臨時文件夾。