为什么在Linux中有那么多地方可以放入二进制文件?至少有以下五个:
/bin/
/sbin/
/usr/bin/
/usr/local/bin/
/usr/local/sbin/
而且在我的办公室邮箱中,我没有其中某些文件的写权限。
哪种二进制类型进入这些bin
s中的哪一个?
~/bin/
个人物品。
/usr/local/bin
吗?
为什么在Linux中有那么多地方可以放入二进制文件?至少有以下五个:
/bin/
/sbin/
/usr/bin/
/usr/local/bin/
/usr/local/sbin/
而且在我的办公室邮箱中,我没有其中某些文件的写权限。
哪种二进制类型进入这些bin
s中的哪一个?
~/bin/
个人物品。
/usr/local/bin
吗?
Answers:
/bin
(和/sbin
)用于需要在挂载/
较大的分区等之前在较小/usr
分区上的程序。如今,它主要用作关键程序之类的标准位置/bin/sh
,尽管最初的意图可能仍然与例如小型嵌入式设备上的安装有关。
/sbin
与区别/bin
,是用于/usr
挂载之前所需的系统管理程序(普通用户通常不使用)。
/usr/bin
用于分发管理的普通用户程序。
有一个/usr/sbin
具有相同的关系,/usr/bin
为/sbin
有/bin
。
/usr/local/bin
适用于不受分发程序包管理器管理的普通用户程序,例如本地编译的程序包。您不应将它们安装到其中,/usr/bin
因为将来的发行版升级可能会在没有警告的情况下修改或删除它们。
/usr/local/sbin
,你可以在这一点上可能会猜到,是/usr/local/bin
因为/usr/sbin
到/usr/bin
。
此外,还有/opt
用于整体式非发行版软件包的软件包,尽管在正确集成之前,各种发行版都将Gnome和KDE放在了那里。通常,您应该将其保留给行为不佳的大型第三方软件包,例如Oracle。
~/bin
然后以用户身份将该目录添加到您的PATH ...感谢您的注释,我删除了严重过时的注释。
PATH
变量中的顺序,echo $PATH
对我来说/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
,这表明,可执行文件的/usr/local/bin
优先级高于可执行文件的优先/usr/bin
级/bin
。
Wikipedia中的Filesystem Hierarchy Standard条目在我遇到时帮助我回答了同样的问题,此外它还有一个非常说明性的表格。
摘自该页1:
/bin Essential command binaries that need to be available in single user mode; for all users, e.g., cat, ls, cp. /usr/bin Non-essential command binaries (not needed in single user mode); for all users. /usr/local Tertiary hierarchy for local data, specific to this host. Typically has further subdirectories, e.g., bin, lib, share /usr/sbin Non-essential system binaries, e.g., daemons for various network-services. /sbin Essential system binaries, e.g., fsck, init, route.
1 于2019年6月19 日检索; 永久链接。
该sbin
目录包含了通常只有系统管理程序。普通用户的程序永远不要加入其中。
在启动过程中需要一些程序,最终在/bin/
或中/sbin/
。这些文件必须在挂载文件系统之前可用。之类的东西mount
,而且fsck
所需要的检查和挂载文件系统必须有。
大多数打包程序都以/usr/bin/
和结尾/usr/sbin/
。这些文件可能位于根文件系统以外的文件系统上。在某些情况下,它们可能位于网络安装的驱动器上。
本地程序和脚本属于/usr/local/bin/
和/usr/local/sbin/
。这显然将它们标识为非标准的,并且可能仅在现场提供。
有关更多说明,请尝试运行命令man hier
,该命令应提供针对您的发行版的建议文件系统层次结构的描述。您可能还想阅读Wikipedia上的文件系统层次结构
在1970年代,UNIX
所有正式的可执行文件都在,/bin
并且/usr/bin
位于用户主目录(例如/usr/dmr
)下方,可供任何用户存储自己的二进制文件,其他人也可能感兴趣。
这次打开的/usr/bin
结果是一大堆没有文档的软件,于是Stephen Bourne
写了一个cron script
,每晚检查新的二进制文件,并删除所有没有文档的二进制文件,或者已经更新而又不更新其文档的二进制文件。
在1970年代后期,它/usr/bin
被集成到OS基本发行版中,人们开始使用/usr/local/bin
以前的版本/usr/bin
。
一段时间后,sysadmins曾经/usr/local/bin
存储non-local
从网络(例如USENET)导入的软件,并且由于UNIX公司不希望重复同样的错误/usr/bin
,因此在1987年左右召开了文件系统层次结构会议,所有UNIX公司都同意放弃/usr/local/bin
并/opt/<vendor>/bin
取而代之。
不幸的是,Linux发行版没有遵循此决定。
/opt
与UNIX有关,与Linux有关。这就像回答“为什么汽车有四个车轮?” “自行车有2个!可悲的是,汽车没有。” 这不利于OP理解为什么汽车有4
/usr/sbin/
。