/bin 在有的Unix和Linux系统中是/usr/bin的链接,不过UBuntu系统是两个独立的目录。/bin 存放系统管理员和普通用户都要使用的程序。
/sbin 存放用于系统恢复,系统启动,系统维护等程序
/usr/bin 登录用户可以使用的预装程序一般都放在这里
/usr/share/bin 可以通过web访问的程序一般放在这里
*local* 目录下的都不是系统预装,而是手动编译或者安装的程序
usr 指 Unix System Resource,而不是User
/usr/bin与/usr/local/bin区别
通常/usr/bin下面的都是系统预装的可执行程序,会随着系统升级而改变
/usr/local/bin目录是给用户放置自己的可执行程序的地方,推荐放在这里,不会被系统升级而覆盖同名文件
如果两个目录下有相同的可执行程序,谁优先执行受到PATH环境变量的影响,比如我的一台服务器的PATH变量为
- echo $PATH
- /usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/dean/bin
这里/usr/local/bin优先于/usr/bin, 一般都是如此。
/lib, /usr/lib与/usr/local/lib
/lib目录都是为/bin, /sbin准备的,一般作为开发者不用关心
开发者需要关心下面的事情,一个应用程序启动的时候,会在/lib 和 /usr/lib库中查找动态库,如果动态库没有放在此处,需要用环境变量LD_LIBRARY_PATH指定。比如在程序启动脚本中这样写,就能在/usr/local/lib目录中加载到自己放进去的动态库
- export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
注意,这是运行时的环境变量,和程序编译时没有关系。