質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.01%

Macの環境変数が壊れてしまった

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 2,360

tamogi

score 78

前提・実現したいこと

急にMacのnpmコマンドが「command not found」と表示されましたの質問の続きとなります。

おそらくVisualStudio for Mac Preview版をインストールしたタイミングだと思いますが、インストール後に
npm, cordova, adbなどのコマンドを実行すると全て「command not found」と表示されてしまうようになりました。

上記質問の回答を踏まえた上で、もう一度調査したのですが、解決しなかったため、再度質問させていただきます。

発生している問題・エラーメッセージ

npm, cordova, adbなどのコマンドが全て「command not found」となってしまう。
※cd, pwd, lsといった標準のコマンドは入力可能
※「su -」でrootユーザとして実行した場合は可能。(sudoはダメ)

$ cordova
-bash: cordova: command not found

該当のソースコード

上記質問で指摘されたのは、そもそも環境変数$PATHの値がおかしくなっていることが原因ということでした。
正常にコマンドが実行できていた時のPATHの内容を記録していないので、もとがどのような状態だったかはわかりません。

以下、現在の環境変数$PATHの内容です。

$ echo $PATH
"/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:"/usr/local/bin:/sbin";";

試したこと

.bash_profileの内容がおかしいのかと思い、内容を確認したところ、以下のようになっていました。

export ANDROID_HOME=/Users/ユーザ名/Library/Android/sdk
export JAVA_HOME=`/usr/libexec/java_home -v 1.8`
export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-toolseval $(/usr/libexec/path_helper -s)


特に問題は無いと思っています。ただ、上記「該当のソースコード」のとおり、PATHを出力したときにこの内容は出力されていません。
#そもそもこの時に.bash_profileの中身が出るのかどうかすら理解できていませんが・・・。

続いて、paths.d内を調べました。

$ cd /etc/paths.d
$ ls
#結果なし

現在調べた範囲は上記の内容となりますが、これ以上調べても解決方法がわからず、手詰まりの状態です。
解決策のご教示のほどお願い致します。

追記

記述漏れがありました。「/usr/libexec/path_helper -s」を実行したところ、以下のようになっています。

$ /usr/libexec/path_helper -s
PATH="/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:"/usr/local/bin:/sbin";";"; export PATH;


明らかにおかしいみたいですが、これを修正するにはどこを修正すれば良いのかがわかりません。

「source ~/.bash_profile」コマンドを実行したところ、以下のようになっています。

$ source ~/.bash_profile
-bash: export: `PATH;': not a valid identifier


.bash_profileの内容がおかしいというより、上記のpath_helperの出力結果がおかしいのを引津っているような気がします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

.bash_profileの内容がおかしいというより、上記のpath_helperの出力結果がおかしいのを引津っているような気がします。

いや、 path_helper の使い方としては、 /etc/profile にもありますが、

 eval `/usr/libexec/path_helper -s`

が正しいです。したがって、 .bash_profile の $(/usr/libexec/path_helper -s) はあきらかにおかしいです。
不要なので、削除されてはいかがでしょうか。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/03/05 01:17

    ありがとうございます。ご指摘の通り、.bash_profileの最後にくっついていた「eval $(/usr/libexec/path_helper -s)」を削除したところ、無事コマンドが使えるようになりました。

    この部分は追加した記憶が無いのですが、いつのタイミングで追加されたのか謎です・・・。

    キャンセル

  • 2017/03/05 08:43

    解決してよかったです。きっと、何かのインストーラが自動的に追加したのでしょうね。付近の状況からみて推論ですが、Android Studio のパスが追加されたときにファイルの最後に改行がない状態で追加され、別のおせっかいなインストーラが eval $(/usr/libexec/path_helper -s) をファイルの末尾に追加したのではないでしょうか。

    キャンセル

  • 2017/03/07 19:09

    なるほど、最後は改行が必要なのですね。
    Android系のパスの行は自分で追加したので、改行を意識していませんでした。

    そのおせっかいなインストーラは、VSCodeの拡張機能の「Cordova Tools」か、「VS for Mac Preview」のどちらかだと思います。(濡れ衣かもしれませんが・・・。)
    その2つを同時にインストールし、その直後にコマンドが使えなくなったので・・・。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.01%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる