LoginSignup
271
276

More than 5 years have passed since last update.

初心者向け:command not foundを解決する方法

Last updated at Posted at 2017-09-04

概要

プログラミングの学習を始めた頃、Ruby on Railsの環境構築において、command not found にたびたび遭遇しました。

色々な記事を参考にして、その通りにやってみるのですが、なかなか解決できません。

理解すれば簡単なのですが、理解までに時間が掛かりました。

その経験を生かして、わかりやすく解決の手順を紹介します。

解決ポイント

  • 解決するためには、以下のポイントで確認します。

(1) コマンド実行ファイルがあるか?

(2) コマンドまでの検索パスが通っているか?

  • この2つのポイントを押さえれば、解決は早いです。

手順

コマンド実行ファイルの検索

  • まず command not found が出た時は、コマンドの実行ファイルがどこにあるか確認します。
  • rbenvを例にします。
$ which -a rbenv
  • すると以下のように表示されました。
rbenv () {
    local command
    command="$1"
    if [ "$#" -gt 0 ]
    then
        shift
    fi
    case "$command" in
        (rehash | shell) eval "$(rbenv "sh-$command" "$@")" ;;
        (*) command rbenv "$command" "$@" ;;
    esac
}
/usr/local/opt/rbenv/bin/rbenv
/usr/local/bin/rbenv
  • ここで表示されている以下の場所にコマンド実行ファイルがあるということです。
/usr/local/opt/rbenv/bin/rbenv
/usr/local/bin/rbenv
  • もし以下のように表示された場合、rbenvの実行ファイルがそもそもないということになります。
$ which -a rbenv
rbenv not found
  • この場合は、まずrbenvをインストールします。
$ brew install rbenv

実行したいコマンドまで検索パスが通っているか確認

  • コマンド実行ファイルがあったとしても、そのコマンドを実行する検索パスが通っていなければ、command not found になります。
  • 検索パスは以下のコマンドで確認します。
$ echo $PATH
/usr/local/opt/rbenv/shims:/usr/local/opt/rbenv/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin
  • ここで色々と表示されますが、実際にはコンマで区切られており、わかりやすく表示すると以下と同じ意味です。
  • この検索パスを順番に検索して見つかったら実行します。
/usr/local/opt/rbenv/shims
/usr/local/opt/rbenv/bin
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
/opt/X11/bin
  • この場合、rbenvの実行ファイルへの検索パスは通っているので、コマンドを実行することができます。
/usr/local/opt/rbenv/bin
/usr/local/bin
  • もし検索パスが通っていない場合は、それを設定する必要があります。

検索パスを通す

  • それでは検索パスを通す方法を紹介します。

検索パスは、シェルで設定

  • 検索パスはどこに設定するかというと、シェルです。
  • シェルはbashやzshといったもので、Macの標準だとbashになります。
  • それではrbenvを例にbash_profileに設定します。
$ vim ~/.bash_profile
# /Users/user_name/.rbenv/binに検索パスを通す
export PATH="$HOME/.rbenv/bin:$PATH"

# rbenvの初期化
eval "$(rbenv init -)"
  • 保存した後、設定を反映します。
$ source ~/.bash_profile
  • 検索パスを確認します。
$ echo $PATH
/Users/test_user/.rbenv/shims:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin

※ わかりやすく表示すると、

/Users/test_user/.rbenv/shims
/usr/local/bin
/usr/bin:/bin
/usr/sbin
/sbin
/opt/X11/bin
  • rbenvまでの検索パスが通るようになりました。
  • これでrbenvのコマンドが実行できるようになります。

以上がrbenvを例にして、command not found を解決する方法です。

総括

今回は、rbenvを例にして command not found の解決する方法を見ました。

もちろん色々なコマンドで発生する可能性があるので、上記の内容だけですべて解決できるわけではありません。

しかし、以下の2点を押さえておけば、原因がすぐに見つかりやすいです。

(1) コマンド実行ファイルがあるか?

(2) コマンドまでの検索パスが通っているか?

この記事がエラーの解決に貢献できたら、嬉しいです。

271
276
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
271
276