概述
- 在linux系統當中,對于可執行文件或者說是可執行命令,通常可以存放在/bin,/sbin,/usr/bin,/usr/local/bin,usr/sbin等目錄,而這些目錄存放的可執行命令存在哪些區別呢?或者說某個命令存放在哪個文件夾存在何種規范呢?具體如下分析。
系統級別
/bin
- 存放系統操作的最基本的,必須的執行命令,即對所有用戶(普通用戶和管理員)都可能需要用到的命令,如下為mac系統下的bin目錄,標準的Linux服務器包含更多:
xyzdeMacBook-Pro:bin xyz ls [ cp df hostname link mv rm stty unlink bash csh echo kill ln pax rmdir sync wait4path cat date ed ksh ls ps sh tcsh zsh chmod dd expr launchctl mkdir pwd sleep test
/sbin
- 存放系統管理的命令,即一般為管理員用到而普通用戶基本不會用到的命令,如ping, ifconfig等網絡相關的命令,如下:
xyzdeMacBook-Pro:sbin xyz ls apfs_hfs_convert fsck_hfs kextunload mount_exfat newfs_apfs quotacheck autodiskmount fsck_msdos launchd mount_fdesc newfs_exfat reboot disklabel fsck_udf md5 mount_ftp newfs_hfs route dmesg fstyp mknod mount_hfs newfs_msdos rtsol dynamic_pager fstyp_hfs mount mount_msdos newfs_udf shutdown emond fstyp_msdos mount_acfs mount_nfs nfsd umount fibreconfig fstyp_ntfs mount_afp mount_ntfs nfsiod fsck fstyp_udf mount_apfs mount_smbfs nologin fsck_apfs halt mount_cd9660 mount_udf pfctl fsck_cs ifconfig mount_cddafs mount_webdav ping fsck_exfat kextload mount_devfs mpioutil ping6
用戶級別
/usr/bin
- 存放普通用戶日常使用和工作所需的一些命令和軟件,但不是必須的,如vi,wc,curl等,編程語言命令如Python,JAVA,jstat等,即系統預裝的相關軟件時會將該軟件的可執行文件添加到該目錄中。
/usr/local/bin
- 與/usr/bin的區別是,/usr/bin下面的命令通常是系統預裝的命令,會隨著系統的升級而改變。而/usr/local/bin通常用于存放用戶下載安裝的軟件或者自己編寫的可執行命令,這里的同名命令不會被系統升級而覆蓋。如MySQL,redis-cli,mvn等,而通常來說,這些軟件是通過軟連接的方式來連接到實際的可執行命令的地址,一般是按照在/usr/local目錄下:
lrwxr-xr-x 1 xyz admin 51B 8 9 2018 mysql -> /usr/local/mysql-5.7.23-macos10.13-x86_64/bin/mysql lrwxr-xr-x 1 xyz admin 68B 8 13 2018 mysql.server -> /usr/local/mysql-5.7.23-macos10.13-x86_64/support-files/mysql.server lrwxr-xr-x 1 xyz admin 51B 8 12 2018 mysql_config -> ../Cellar/mysql-connector-c/6.1.11/bin/mysql_config lrwxr-xr-x 1 xyz admin 55B 8 28 2018 mysqldump -> /usr/local/mysql-5.7.23-macos10.13-x86_64/bin/mysqldump
/usr/sbin
- 存放管理員這個用戶可能用到但不是必須的應用程序命令。