Answers:
/usr/local/bin
适用于普通用户可以运行的程序。
/usr/local
层次结构供系统管理员在本地安装软件时使用。/usr
。/usr/local
除非要安装本地安装的软件以替换或升级,否则必须将本地安装的软件放置在/ usr之下/usr
。该资源有助于更深入地说明文件系统层次结构标准。
您可能还会发现这篇关于/usr/local/bin
有趣的用法和滥用的文章。
/ usr /,我假设是计算机的用户。
关。
Unix最初是一个多用户操作系统,所以它不是“用户”,而是“ 用户 ”,是复数形式。
在1988年AT&T Unix System V Release 4(SVR4)发行之前,其用户管理工具默认在中创建用户主目录/home
,常规位置为/usr
.¹您的$HOME
目录可能/usr/jfw
位于System III框中。
/usr
还包含,那么和现在一样,/usr/bin
,/usr/lib
,等方面的经验表明,分离的主目录是很好的系统管理实践,使之与/home
在SVR4政策的变化,它失去了一切,我们现在所认为的属于/usr
。
/usr
仍然有一个保留该名称的充分理由:留下的文件是直到系统启动到足以支持常规交互使用的程度才需要的文件。也就是说,剩下的只是操作系统中以用户为中心的部分。这意味着/usr
可以使用不同的物理卷,这在92 MB的硬盘驱动器大小的洗衣机时代是一件好事。
早期的Unix系统会小心地保留核心OS文件,以/usr
使即使/usr
由于某种原因无法卸载卷,您仍可以引导至单用户模式² 。根卷包含足够的工具来使该/usr
卷恢复联机。
现在,有几种Unix风格无视这种旧的设计原理,因为即使小型嵌入式系统也有足够的空间容纳传统的根卷文件和所有/usr
单个卷上的文件。³Red Hat Enterprise Linux,Solaris和Cygwin符号链接/bin
到/usr/bin
和/lib
指向,/usr/lib
因此没有这些目录之间的任何差异都不再存在。
... / local / ...显然代表本地计算机...
是。它指的是以下文件/usr/local
应该特定于该单个系统的事实。任何形式的通用文件都应存放在其他位置。
这也可以追溯到几十年前Unix系统被标准化时所使用的方式。同样,当时的硬盘体积庞大,非常昂贵,并且按今天的标准存储很少。为了节省磁盘上的钱和空间,一个装满Unix盒的计算机实验室通常会/usr
通过NFS或其他一些网络文件共享协议共享大部分内容,因此每个盒都不必拥有自己的冗余副本。盒子会在下面/usr/local
,这是与分开的体积/usr
。
这是历史悠久的传统,这就是为什么/usr/local
在手动安装时,仍然是大多数第三方Unix软件的默认默认安装原因。大多数此类软件将使您可以将软件包安装在其他位置,但是通过选择非选项,您将获得安全的默认设置,该默认设置不会干扰具有特定用途的其他常见安装位置。
有充分的理由将软件安装在其他位置。苹果的macOS团队在bash
从GNU Bash源代码构建时就做到了这一点。它们/
用作安装前缀,覆盖了/usr/local
默认值,因此Bash以结尾/bin
。
另一个示例是较旧的Linux系统将其GUI软件隔离到中的方法/usr/X11R6
,以使其与传统的命令行curses
软件和基于软件的软件分开。只需/usr/local
使用/usr/X11R6
.⁵ 覆盖默认前缀即可完成此操作
/ bin是什么?
“ binary”的缩写,在此上下文中表示“不是纯文本的文件”。大多数此类文件都是Unix机器上的可执行文件,因此这两个术语在某些圈子中已成为同义词。(“请为我为RHEL 7构建二进制文件,弗雷德。”)
在Unix文本文件住在别处:/etc
,/usr/include
,/usr/share
等。
曾几何时,即使shell脚本(纯文本文件)也被排除在bin
目录之外,但这一行也变得模糊了。如今,bin
目录通常包含任何类型的可执行文件,无论是否严格地“二进制”。
脚注和题外话:
SVR4之前的用户管理工具的原始性质意味着该HOME=/usr/$NAME
方案仅作为约定记录在案,而不是由软件工具默认实施。
您可以在“ AT&T Unix System V版本3.2系统管理员指南 ”的第4-8页上看到此内容:在这里,您可以看到AT&T /usr/$NAME
在SVR4推出之前的最新主版本Unix中推荐旧方案。
在较旧的Unix系统中,系统管理员通常选择一种对他们更有意义的方案。人是人,这意味着发明了许多不同的方案。
我/home/$NAME
成为标准之前遇到的一个方案是/u/$NAME
。
我使用的另一个系统在90年代初有,他们可能不适合所有的主目录到一个单一的物理卷如此多的用户,所以他们使用的方案一样/u1/$NAME
,/u2/$NAME
等,我记得。您的主目录最终驻留在哪张磁盘上,仅是在创建帐户时哪一个磁盘上有空间的问题。
您可以在启动时按住不放,将macOS盒子引导到单用户模式Cmd-S。屏幕变黑后放开,您会看到浅灰色的文本出现。就像在终端下运行一样,但是它占据了整个屏幕,因为GUI尚未启动。
请注意,您的运行方式为root
。
在单用户根目录提示符下键入“ exit”,以退出单用户模式并继续引导至多用户GUI模式。
实际上,Unixy操作系统似乎仍然无法保留重要的单用户模式文件/usr
。我曾经通过移动/usr
到ZFS卷使FreeBSD 9盒无法启动。我忘记了ZFS-on-root功能直到FreeBSD 10才发布,创建了Catch 22:操作系统需要文件/usr
才能挂载/usr
!
那已经很糟糕了,但是如果FreeBSD 9仍然没有保留其单用户引导内容/usr
,我可以将其固定到位。由于即使/usr
挂载也无法启动至单用户模式,因此显然已经以某种方式违反了传统。我必须从应急CD引导才能再次恢复该系统。
这也是我们得到的地方/usr/share
:它隔离甚至在具有不同处理器类型的Unix盒之间也可以共享的文件。通常,文本文件:手册页,字典等。
“ X11R6”指的是在该惯例流行之时支持Linux GUI 的X Window System版本。Linux系统通常在X11R6替换为X.Org时停止隔离GUI软件。
原始Unix系统保留了它们的核心shell脚本,/etc
以避免将它们与真正的二进制文件混合在一起/bin
。
我建议一般参考Wikipedia中与结构相关的问题,它涵盖了基础知识。
但是,要直接回答您的问题:
这就是为什么您倾向于在两者之间找到相似的结构。/ usr / {,local /} {bin,sbin,lib}。对shell来说是新手,而{}的含义是shell扩展。尝试执行
ls -ld /usr/{,local/}{bin,sbin,lib}
从您的本地外壳查看其工作原理。
/usr/local/bin
显示了最新Mac OS(基于BOS的BSD)的UNIX风格的根。
自从UNIX到Linux和BSD的早期实现以来,这种情况已经发生了变化,但是约定一直存在。现在,/usr/bin
适用于“主”或核心程序和库,/usr/local/bin
适用于附加和非关键程序和库。
/usr/nzwulfin
默认情况下初始工作目录为。另一个常见的方案。在SVR4 /home
计划接管之前,是/u
。我早期使用的一个系统有这么多用户,他们需要多个物理磁盘来存储用户文件,所以他们有诸如此类的东西/u/d5/tangent
。
我建议您将其/usr/local
用于可能安装的商业程序,例如Mathematica。设置时将其放置在其自己的分区中。升级操作系统时,该分区不会受到干扰,您也不必重新安装其内容。因此,将其用于您希望在两次操作系统升级之间保留的内容。
另外,也请确保/home
为此也指定自己的分区。
这个答案也可能会有所帮助。
最初的想法/usr/local
是在之外的每台计算机上都有一个单独的(“本地”)“ / usr”目录/usr
,该目录可能只是从其他位置以只读方式安装的。它复制的结构/usr
。
这些天来,/usr/local
被广泛认为是保留自编译或第三方程序的好地方。该/usr/local
层次结构供系统管理员在本地安装软件时使用。更新系统软件时,必须确保它不会被覆盖。
它可用于在一组主机之间共享但在中找不到的程序和数据/usr
。必须将本地安装的软件放置在内部/usr/local
,/usr
除非安装了本地安装的软件以替换或升级中的软件/usr
。