英文注释
/bin This directory contains executable programs which are needed in single user mode and to bring the sys‐
tem up or repair it.
/sbin Like /bin, this directory holds commands needed to boot the system, but which are usually not executed
by normal users.
/usr/bin
This is the primary directory for executable programs. Most programs executed by normal users which
are not needed for booting or for repairing the system and which are not installed locally should be
placed in this directory.
/usr/sbin
This directory contains program binaries for system administration which are not essential for the boot
process, for mounting /usr, or for system repair.
/usr/local/bin
Binaries for programs local to the site.
/usr/local/sbin
Locally installed programs for system administration.
中文说明
将上面的英文直译成中文,至少我是看不懂的,不过对于这种英文总会有大神给出风趣而贴切的翻译:
所有用户皆可用的系统程序放在/bin
超级用户才能使用的系统程序放在/sbin
所有用户都可用的应用程序放在/usr/bin
超级用户才能使用的应用程序放在/usr/sbin
所有用户都可用的与本地机器无关的程序存放在/usr/local/bin
超级用户才能使用的与本地机器无关的程序存放在/usr/local/sbin
部分版本中/bin、/sbin已经做成了符号链接
在阿里云轻量应用服务器CentOS 7.3 中/bin、/sbin、/lib、/lib64,分别是/usr/bin、/usr/sbin、/usr/lib、/usr/lib64的符号连接。
其他版本有没有做成符号链接,没做过测试,不敢妄言。
所以在某些情况下,是不是可以得出如下的结论(我猜的,当个乐子去看):
所有用户都可用的与本地机器有关的程序放在/usr/bin
超级用户才能使用的与本地机器有关的程序放在/usr/sbin
所有用户都可用的与本地机器无关的程序存放在/usr/local/bin
超级用户才能使用的与本地机器无关的程序存放在/usr/local/sbin
/usr/bin与/usr/local/bin的其他区别
usr 指 Unix System Resource,而不是User
/usr/bin下面的都是系统预装的可执行程序,会随着系统升级而改变。
/usr/local/bin目录是给用户放置自己的可执行程序的地方,推荐放在这里,不会被系统升级而覆盖同名文件。
如果两个目录下有相同的可执行程序,谁被执行取决于PATH环境变量。
echo $PATH
查看环境变量
/usr/sbin与/usr/local/sbin的其他区别
应该和/usr/bin与/usr/local/bin类似吧。
参考:
https://www.zhihu.com/question/21265424/answer/94120935
https://www.zhihu.com/question/21265424/answer/87530376
https://www.jianshu.com/p/ea6c4758dba4