引言
事實上指令檔案放在哪裡都可以自行決定,也就是自己想放哪就放哪,這些目錄不過是約定,但遵守約定會更好,畢竟沒有人會想要自己的電腦一團糟吧,尤其是 Linux。
優先級
Linux 下的這些 bin 目錄都是存放指令的,如果不同的目錄下有相同名稱的可執行程式,將透過優先級決定先執行哪個目錄的二進位檔案,可以透過使用指令 echo $PATH 查看環境變數以確定指令執行的優先級,例如我的系統輸出如下:
| |
從前到後以 : 分隔,越靠前優先級越高。
/bin
系統的一些指令。bin 為 binary 的縮寫,主要放置一些系統的必備執行檔,例如:cat、cp、chmod、df、dmesg、gzip、kill、ls、mkdir、more、mount、rm、su、tar 等。
/usr/bin
系統預裝的可執行程式,會隨著系統升級而改變。
後續安裝的一些軟體的執行腳本。主要放置一些應用軟體工具的必備執行檔,例如:c++、g++、gcc、chdrv、diff、dig、du、eject、elm、free、gnome*、gzip、htpasswd、kfm、ktop、last、less、locale、m4、make、man、mcopy、ncftp、newaliases、nslookup、passwd、quota、smb*、wget 等。
/usr/local/bin
提供給使用者放置自訂可執行程式的地方,推薦放在這裡,不會因為系統升級而覆蓋同名檔案。
/sbin
一般是指超級使用者 (Superuser) 指令。主要放置一些系統管理的必備程式,例如:cfdisk、dhcpcd、dump、e2fsck、fdisk、halt、ifconfig、ifup、ifdown、init、insmod、lilo、lsmod、mke2fs、modprobe、quotacheck、reboot、rmmod、runlevel、shutdown 等。
/usr/sbin
放置一些使用者安裝的系統管理的必備程式,例如:dhcpd、httpd、imap、in.*d、inetd、lpd、named、netconfig、nmbd、samba、sendmail、squid、swap、tcpd、tcpdump 等。