コマンドが見つからない(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設定を確認してもらいます。
関連する章: パッケージ管理の基本は初級「パッケージ管理の基礎」、シェルの環境設定は中級「シェル環境のカスタマイズとシェルスクリプト入門」で扱っています。