コマンドが見つからない(command not found)
ターミナルでコマンドを打ったのに command not found と言われて実行できない——という状況を切り分けていきます。
どんな症状か
bash: xxx: command not found のように表示されて実行されないケースです。昨日まで使えていたコマンドが急に使えなくなった、他の人の手順書どおりに打っているのに自分の環境だけ動かない、といった相談も多くはこのパターンです。
原因を切り分ける
ステップ1:単純なタイプミスを疑う
$ sl -l
bash: sl: command not found
もっとも多い原因はスペルミスです。特に ls→sl、cd→dc のような打ち間違いはよく起こります。落ち着いて綴りを見直します。
ステップ2:コマンドが実際にインストールされているか確認する
$ which tree
$ command -v tree
which コマンド名 や command -v コマンド名 で、そのコマンドの実行ファイルの場所を確認できます。何も表示されない場合は、そもそもインストールされていません。
ステップ3:PATHが通っているか確認する
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
コマンドの実行ファイル自体は存在するのに command not found になる場合、そのファイルが置かれているディレクトリが $PATH(コマンドを探しに行く場所のリスト)に含まれていない可能性があります。フルパス(例:/opt/tool/bin/mytool)を直接指定して実行できるか試すと切り分けられます。
ステップ4:sudoを付けたときだけ見つからない場合
自分では実行できるのに sudo を付けると command not found になる場合は、root(管理者)用のPATH設定が自分のPATHと異なっていることが原因のことが多いです。sudo env や sudo -i でroot側の環境を確認します。
解決方法
- タイプミスの場合: 打ち直します。
- 未インストールの場合: パッケージ管理コマンドでインストールします(
apt install パッケージ名やdnf install パッケージ名)。 - PATHが通っていない場合:
~/.bashrcなどにexport PATH="$PATH:/追加したいディレクトリ"を追記し、source ~/.bashrcで読み込み直します。 - sudo経由でだけ見つからない場合: コマンドをフルパスで指定するか、管理者に相談してsudo実行時のPATH設定を確認してもらいます。
関連する章: パッケージ管理の基本は初級「パッケージ管理の基礎」、シェルの環境設定は中級「シェル環境のカスタマイズとシェルスクリプト入門」で扱っています。