はじめに
ぶっちゃけ、コマンドファイルをどこに置くかは自分で決められるんだよね。つまり好きな場所に置いていいってこと。これらのディレクトリはただの約束事に過ぎないんだけど、やっぱりルールを守ったほうがいいよ。自分のPC、特に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
一般的にスーパーユーザー(root)向けのコマンドを指すよ。主にシステム管理に必須なプログラムが置いてあるんだ。例えば、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などが入るよ。