/usr 的由来及/usr目录结

/usr 的由来及/usr目录结构

本文转自Delectat.com
讨论中,大部分观点认为:

  • usr 是 unix system resources 的缩写;
  • usr 是 user 的缩写;
  • usr 是 unix software resources 的缩写。

根据常识判断,是 user 缩写的可能性不大,因为和 /home 冲突了嘛。不过是 system resources 还是 software resources 的缩写还真不好说。特此查了好多东西,却发现竟然连 wikipedia 也模棱两可
后来终于找到了 相关的文档和介绍。(viacache

/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;
时间: 2024-10-09 15:23:18

/usr 的由来及/usr目录结的相关文章

linux目录结详解

文件系统的是用来组织和排列文件存取的,所以她是可见的,在Linux中,我们可以通过ls等工具来查看其结构,在Linux系统中,我们见到的都是树形结构:比如操作系统安装在一个文件系统中,他表现为由/ 起始的树形结构.linux文件系统的最顶端是/,我们称/为Linux的root,也就是 Linux操作系统的文件系统.Linux的文件系统的入口就是/,所有的目录.文件.设备都在/之下,/就是Linux文件系统的组织者,也是最上级的领导者. 由于linux是开放源代码,各大公司和团体根据linux的核

#!/usr/bin/python 和 #!/usr/bin/env python

在Linux系统中, #!/usr/bin/python:这句说明是用来告诉系统:文件中的代码是用python编译器去执行, 不然执行时需要输入命令:python XXX.py.有了这行声明,就可以直接用./XXX.py 来执行,在这之前要给脚本设置可执行权限chmod +x XXX.py,因此添加此行代码能方便我们使用.py程序 #!/usr/bin/env python:这种是为了防止用户并不是将python装在默认的/usr/bin路径里,当系统看到这行代码时,会到env设置里查找pyth

#! /usr/bin node 和#! /usr/bin/env node两者的区别

是Unix和Linux脚本语言的第一行,目的就是指出,你想要你的这个文件中的代码用什么可执行程序去运行它 !/usr/bin/python是告诉操作系统执行这个脚本的时候,调用/usr/bin下的node解释器: !/usr/bin/env node这种用法是为了防止操作系统用户没有将node装在默认的/usr/bin路径里.当系统看到这一行的时候,首先会到env设置里查找node的安装路径,再调用对应路径下的解释器程序完成操作. !/usr/bin/node相当于写死了node路径; !/us

C# 输出目录结构树到Console或文本文件

1.关于打印目录树 前几天写文档,要解释一个目录里大部分的子目录和文件的用途,于是顺手写了一个打印文件目录树的C#工具类,可以将生成的目录树打印到Console或是文本文件中. 2.工具类源码 打印目录树工具类:DocTreeHelper 需要手动加载命名空间:System.IO class DocTreeHelper {     /// <summary>     /// 输出目录结构树     /// </summary>     /// <param name=&quo

linux命令:/etc、/bin,/sbin,/lib , /usr /usr/local系统常用目录浅谈

 1.这些目录为系统启动就需要用到的程序,这些目录不能单独挂载为额外分区,  必须在根目录文件系统的分区上.    /etc, /bin, /sbin, /lib     2./usr操作系统核心功能的分区,可以单独分区 /usr/bin  /usr/sbin  /usr/lib    3./usr/local第三方软件所存放的目录的分区,可以单独分区,且建议单独挂载分区. /usr/local/bin  /usr/local/sbin  /usr/local/lib  /usr/local/e

Linux日常case: /usr 目录扩容

安装 Lab平台,CDH5安装失败, 查看/var/log/ 发现/usr目录太小. [[email protected] usr]# cat /var/log/cloudera-manager-installer/3.install-cloudera-manager-server.log  Transaction Check Error:   installing package cloudera-manager-daemons-5.1.1-1.cm511.p0.82.el6.x86_64 n

Linux /bin、/sbin、/usr/bin、/usr/sbin目录的区别

在linux下我们经常用到的四个应用程序的目录是/bin./sbin./usr/bin./usr/sbin .而四者存放的文件一般如下: bin目录: bin为binary的简写主要放置一些系统的必备执行档例如:cat.cp.chmod df.dmesg.gzip.kill.ls.mkdir.more.mount.rm.su.tar等. /usr/bin目录: 主要放置一些应用软件工具的必备执行档例如c++.g++.gcc.chdrv.diff.dig.du.eject.elm.free.gno

/bin,/sbin,/usr/sbin,/usr/bin 目录

/bin,/sbin,/usr/sbin,/usr/bin 目录 这些目录都是存放命令的,首先区别下/sbin和/bin: 从命令功能来看,/sbin 下的命令属于基本的系统命令,如shutdown,reboot,用于启动系统,修复系统,/bin下存放一些普通的基本命令,如ls,chmod等,这些命令在Linux系统里的配置文件脚本里经常用到. 从用户权限的角度看,/sbin目录下的命令通常只有管理员才可以运行,/bin下的命令管理员和一般的用户都可以使用. 从可运行时间角度看,/sbin,/b

为什么很多应用都安装在/usr/local目录下?

首先,Linux的官方文档FHS对该目录的说明:http://www.linuxbase.org/betaspecs/fhs/fhs/ch04s09.html The /usr/local hierarchy is for use by the system administrator when installing software locally. It needs to be safe from being overwritten when the system software is u