command not found 対策 | 初学者でもできたbash_profileへの追記・編集方法。

プログラミング勉強

ターミナルにて firebase login と入力すると command not found 。

npm -v と入力しても command not found 。

gulp -v と入力。これも command not found 。

command not found の原因はパスだということは理解していましたが、

  • echo $PATH で表示されるパスの内容が私の場合何か変(おそらくハマった時にいじりまくった)
  • 永続的に環境変数が保存されるbash_profileを触るのが怖い

という理由から、その場だけ反映されるexport文ターミナルに入力してその場をしのいでいました。

でも、そろそろめんどくさい。設定をきちんとしたい。

ということで、ちょっと不安ながら bash_profile なるものを編集してみましたのでそのメモです。

まずはbash_profileがあるか確認

bash_profileがどこにあるのかもいまいちわかってない状態だったのですが、ターミナルを立ち上げたそのままの状態で(ディレクトリを移動せず)

ls -a

と入力。

するとずらっと.付きファイルが表示されます。.bash_profileは大事なファイルなので普通にlsしただけだと表示されない模様。

あった。

もしbash_profileが無い場合は自分で作る必要があるそうです。

bash_profileを開いて追記

では次にbash_profileを開きます。

ターミナルに

vi ~/.bash_profile

と入力。

すると小さい字で読み取り専用で開くか編集するか・・・などなどと聞かれるので、キーボードのEを押して編集モードで開く。

 

キーボードのIを押すと下の方に赤字でINSERTと表示されるので、その状態なら書き込み・編集が行えます。

環境によってデフォルトの内容は違うと思いますが、私の場合は上にちょろっと if… fi と3行ほど書かれていただけで、あとは謎の余白地帯でした。

↓キーでカーソルをfiの下に持って行って、

2行足しました。

必要なパスを入力。

1行目の

export PATH=$HOME/.nodebrew/current/bin:$PATH

は、nodebrewでNode.jsをインストールした後で npm -vと入れてもcommand not found だったので、そのためのパス。

$HOME というのはよくわからないけど大事そうなので、1行目に追記してみました。

 

2行目の

export PATH=$PATH:./node_modules/.bin

はローカルにインストールしたgulpがcommand not found で、原因はどうやらインストールされてるnode_modulesへのパスが通ってないからだそうな。

なのでそのためのパス。

すでにbash_profileに何らかを書き込んでしまって、それを消したい・修正したい場合。
新規追加のときと同じように編集モードで開いてIを押してINSERT可能にする→不必要な行を削除 or #でコメントアウト

bash_profileを保存・終了する

adbパスの準備

Mac OS Xで環境変数にPATHを追加する方法

上記サイト様を主に参考にさせていただきました。ありがとうございます。

 

必要な情報を入力したら、

escキー
を押して、その後
:wq
そして最後に
エンター

で入力内容が保存されて、通常のターミナルの画面に戻ります。

 

再起動してターミナルで

echo $PATH

を入力してみると、ちゃんと反映されています。

ターミナルを閉じずに反映させるなら

source ~/.bash_profile

とする。

それでもパスがおかしい場合

私の場合ですが、上記のように修正しても、$PATHで表示される内容はどうもおかしい。(同じパスが2回出てくる・ネットで乗ってるよくあるデフォルトのパスより長い、と行った症状。)

どうやらこれは、以前環境変数のことでハマった時に知らず知らずに.bashrcファイルに書き込みを行なっていたのが原因だったようです。。

.bashrcでも.bash_profileでもパスに反映されます。両者の違いはファイルを読み込むタイミング。一般的に環境変数なら.bash_profileに書き込む方が正しいようです。

なので、

vi ~/.bashrc

でファイルを開き、Iを押して編集モードに。

該当の行をコメントアウト・または削除し、escを押してからの :wq で保存&終了処理をして完了・・・。

ターミナルを再度立ち上げてecho $PATHをすると、ちゃんときれいなパスに戻っていました〜疲れた〜

タイトルとURLをコピーしました