ソフトウェア

Macで「zsh: command not found」が出る原因と対処法

Macで「zsh: command not found」が出る原因と対処法

Linuxとの親和性が高く、プログラミング、システム開発でよく利用されるMac(マック)。

開発時にTerminal(ターミナル)を使うことになるが、ターミナルでコマンドを実行した際に zsh: command not found となる場合がある。

pyenv --version
zsh: command not found: pyenv

コマンド対象となるプログラムをインストールしていなかったのならインストールすればいいが、コマンド対象のプログラムは存在していてもこのエラーが起こる場合は何が原因なのか。

今回はそんな問題を解決する為に、「Macで「zsh: command not found」が出る原因と対処法」を紹介する。

この記事を書いている人


からさん
システムエンジニア、AIエンジニアと、IT業界で10年以上働いている中堅。最近業務でMacを使うようになり、日々エラーにぶつかっては検索して解決する生活をしている。

記事を読むメリット

  • Macで「zsh: command not found」が出る原因と対処法がわかる

  • 「zsh: command not found」が出る原因

    「zsh: command not found」が出る原因は command not found が示すようにコマンドが見つからないからだ。

    実行したいプログラムが存在して、更に絶対パスで指定しているならまずこのエラーは起こらない。

    このエラーが起こる場合は大抵絶対パスを指定しない短いコマンドで起こる。
    短いコマンドを実行して「見つかりません」状態になる場合は、PATHが通っていないから。


    PATHとは

    PATHとは、コマンドを入力されたときに対応するプログラムを探しに行く先、「指定されたフォルダ」である。

    少年
    指定されたフォルダって何?
    意味がわからない・・・
    例えば、「包丁持ってきて」って言われたらどこを探しに行く?
    からさん
    少年
    まぁ台所に取りに行くかな
    でも「包丁持ってきて」って言っただけで「台所から」とは言ってないよね?
    その「とりあえず台所から持ってくる」というのがPATHの役割なのさ。
    からさん
    少年
    ・・・というと?
    コマンドで「○○実行して」と言っても、PCからすれば「○○ってどこだよ・・・」ってなっちゃうところを、とりあえず探しに行く場所としてプログラムの入ってそうなフォルダをいくつか指定しておけば、そこに指定した○○があれば実行してくれるわけ。
    からさん
    少年
    なるほど、たしかにどこかのフォルダにプログラムがあっても、名前だけだと場所がわからないから、あらかじめ候補となる場所を指定しておくわけか
    そんな感じ
    からさん


    PATHの確認方法

    PATHが通っているかどうかはターミナル上で env と打って実行すると、環境変数一覧が表示されるので、その中のPATHに実行したいプログラムがあるフォルダが含まれていなければPATHが通っていないことになる。


    PATHの指定方法

    PATHの指定方法はMacというかUnix系だと export コマンドを使う。
    PATHという環境変数に追加したいフォルダをコロン : 区切りで指定することでPATHを指定できる。

    export PATH="(追加したいフォルダ):$PATH"
    

    しかしexportを実行しただけではターミナルを開いている間だけしか効果がない
    いつも使う場合は最初からPATHに追加されているのが望ましい。

    その場合は .zprofile にexportコマンドを追加しておくと良い。
    .zprofile はターミナルが開かれた瞬間(zshが実行された瞬間)に実行されるので、ここにexportコマンドを仕込んでおけば常に初手でexportコマンドが実行されるので、実行したいプログラムのあるフォルダにPATHが通った状態で作業することができる。

    pyenvの例だと nano ~/.zprofile.zprofile を開き、以下のコマンドを追加すると $HOME/.pyenv/bin にあるpyenvを絶対パス指定せずに実行できるようになる。

    export PYENV_ROOT="$HOME/.pyenv"
    export PATH="$PYENV_ROOT/bin:$PATH"
    eval "$(pyenv init -)"
    


    .bash_profileでPATH設定したのに反映されない

    .bash_profile.bashrc でPATH設定したのに反映されない」

    こんな疑問もあるかもしれない。
    これは実行しているシェルアプリが違うからである。
    .bash_profile はあくまでbash起動時に実行されるもので、zsh用は .zprofile となる。

    macOSはCatalinaから bash ではなく zsh を標準とするようになったので、zshを使うならbash用ではなくzsh用の設定が必要となる。

    Qiitaなどの記事ではまだbashで設定するものが多いので、zshを使う場合は読み替えが必要なので注意。

    もしくはターミナルで起動するシェルを zsh ではなく bash に変更するのも対処法の一つとなる。


    Macで「zsh: command not found」が出る原因と対処法 まとめ

    Macで「zsh: command not found」が出る原因は、実行したいプログラムがあるフォルダにPATHが通っていないから

    PATHを通すには .zprofile を開いて、PATHを通すための export コマンドを追記しよう。
    .bash_profile を使いたい場合はターミナルで使うシェルをzshからbashに切り替える。


    コチラもオススメ

    KRSW

    駆け出し機械学習エンジニア。機械学習、DB、WEBと浅く広い感じ。 Junior machine learning engineer. Not a specialist but a generalist who knows DB, WEB too.

    役に立ったらシェアしてくれると励みになります。

    にほんブログ村 IT技術ブログへ

    -ソフトウェア
    -, ,

    Translate »

    Copyright© ITips , 2020 All Rights Reserved.