gitHubの環境設定に失敗してLinuxコマンドが使用できなくなった時の解決方法

GitHub&RubyonRailsアイキャッチプログラミング

どうも、フリーランス目指して奮闘中のyuta(@Ho_m_ie)です。

Rails/GitHubを使って開発をしている際、環境構築を行っていると、操作を誤ってLinuxコマンドが使用できなくなったことがありました。

同じ共同開発のメンバーだったchinjuさんに対処法を教わったので、そこでの解消方法をメモとして残しておきます。

初心者は特につまづきやすいところだと思うので気をつけましょう。解決方法だけ知りたい方は、目次の4からどうぞー。

Linuxコマンドが使用できなくなった背景

READMEに記載されていた環境構築をローカルで行っていた。

echo "export PATH=\$HOME/.nodebrew/current/bin:\$PATH" >> ~/.bash_profile を実行

実行直後、lsやrmなどのリナックス系のコマンドが使えなくなってしまう。

ググって見つけた解決法を試してみても改善されず。

PATHが変更されたのかなと思い、ステータスを調べてみました。
Yutas-MacBook-Air:~ ushijimayuuta$ echo $PATH
/Users/ushijimayuuta/.nodebrew/current/bin:SPATH


ここからどのようにしてPATHを変更すればいいかわからなくなったところでchinjuさんに質問。

今回の問題点

    今回は

  • `bash_profile` に unix コマンドを呼び出すための path を何かしら上書きしてしまい、呼出せなくなったこと

が原因だと判明しました。今自分がなんのコマンドを叩いているのか理解していないと起こりやすいエラーです。

chinjuさんとの会話一覧

ここからは今回の問題解消に向けて、chinjuさんとのやりとりを掲載いたします。私が2時間かけて調べてわからなかったことを、たった10分足らずで解決されてしまったすごいお方です。やはり不明点はプロに聞くのに限りますね!

一流フリーランスエンジニアとRailsビギナーとのやりとり

[speech_bubble type=”ln” subtype=”L1″ icon=”chinju.jpg” name=”chinjuさん”] bash_profile に記述を追加したことが問題だと思いますので、まずはそちらを削除しましょう
[/speech_bubble]
[speech_bubble type=”ln” subtype=”R1″ icon=”yuta.png” name=”yuta”]rmコマンドが使えない場合、どのようにググったら出てきますか? [/speech_bubble]

[speech_bubble type=”ln” subtype=”L1″ icon=”chinju.jpg” name=”chinjuさん”]
んー、普通のターミナルを使っているのであれば、
・iTermを導入する(ダメな気がしている)
・Finder から隠しファイル出すようにして、 bash_profile を普通に消す
などでしょうか
[/speech_bubble]

[speech_bubble type=”ln” subtype=”R1″ icon=”yuta.png” name=”yuta”]取り急ぎ、iTerm導入してもダメでしたので報告します^^;
[/speech_bubble]

[speech_bubble type=”ln” subtype=”L1″ icon=”chinju.jpg” name=”chinjuさん”]
だめですよね、そんな気がしました。
bash_profile の削除ってできました?
ちなみにコマンド実行を直接
`/bin/ls`とかやってもエラーしちゃいますかね?
path で怒られてる気がしてならないので、直接指定して叩けばいける気がしなくもないです
[/speech_bubble]

[speech_bubble type=”ln” subtype=”R1″ icon=”yuta.png” name=”yuta”]おお!いけました!
これからずっと直接指定して叩かないとダメですかね^^;
[/speech_bubble]

[speech_bubble type=”ln” subtype=”L1″ icon=”chinju.jpg” name=”chinjuさん”]
bash_profile が原因だと思われるので
[/speech_bubble]

[speech_bubble type=”ln” subtype=”R1″ icon=”yuta.png” name=”yuta”]
なるほど、直接指定してzshとかインストールする感じですかね[/speech_bubble]

[speech_bubble type=”ln” subtype=”L1″ icon=”chinju.jpg” name=”chinjuさん”]
vim って打つと vim 起動します?

[/speech_bubble]

[speech_bubble type=”ln” subtype=”R1″ icon=”yuta.png” name=”yuta”]
起動しないですね^^;
[/speech_bubble]

問題が解決しないので、ここでbash_profileを消すことに

[speech_bubble type=”ln” subtype=”L1″ icon=”chinju.jpg” name=”chinjuさん”]
であればけしましょうか。

`/bin/rm ~/.bash_profile`のコマンドを叩いてください。
あ、そのまえに、

`/bin/mv ~/.bash_profile ~/.bash_profile_backup`

`/usr/bin/touch ~/.bash_profile`

`source ~/.bash_profile`

ダメならターミナル再起動しましょう。
[/speech_bubble]

[speech_bubble type=”ln” subtype=”R1″ icon=”yuta.png” name=”yuta”]
chinjuさん、いけました!
[/speech_bubble]

[speech_bubble type=”ln” subtype=”L1″ icon=”chinju.jpg” name=”chinjuさん”]
お、よかったですー。
[/speech_bubble]
[speech_bubble type=”ln” subtype=”R1″ icon=”yuta.png” name=”yuta”]
ありがとうございます!
[/speech_bubble]

chinjuさんのありがたい解説

[speech_bubble type=”ln” subtype=”L1″ icon=”chinju.jpg” name=”chinjuさん”]
今回Linuxコマンドが使えなくなった理由として、path の指定が原因だということが推測できたので、コマンドが置いてある path を直接叩きにいくことで対処しています。
それが、

`/bin/mv`
`/usr/bin/touch`

とかです。
ちなみに、実際に叩くコマンドは `bin` 配下に置いてあります。
つまり、

  • mv ~/.bash_profile ~/.bash_profile_backup`
  • mv ~/.bash_profile ~/.bash_profile_backup
  • touch ~/.bash_profile`


この部分が該当しますね。
最後に`source ~/.bash_profile`のコマンドを叩くことで設定を反映させています。
[/speech_bubble]

bash_profileを初期化したので、アフターケアとして再設定をする必要

[speech_bubble type=”ln” subtype=”L1″ icon=”chinju.jpg” name=”chinjuさん”]

今まで bash_profile に設定していたいろいろが効かなくなっていると思うので

atom ~/.bash_profile_backup

必要なものだけ bash_profile を copy して source で読み込みましょう

[/speech_bubble]

[speech_bubble type=”ln” subtype=”R1″ icon=”yuta.png” name=”yuta”]わかりました![/speech_bubble]

※ちなみに、atom ~/.bash_profile_backupでコマンドを叩いているのは、僕がatomユーザーであるためです。
もしあなたが別のテキストエディタを使用しているのであれば、そのコマンドを実行してくださいね。

確認してみると、nodebrewのpath読み込みがそもそも多かった

[speech_bubble type=”ln” subtype=”R1″ icon=”yuta.png” name=”yuta”]
今、bash_profileは
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
export PATH=$HOME/.nodebrew/current/bin:$PATH
alias be='bundle exec'
export PATH=$HOME/.nodebrew/current/bin:\SPATH
export PATH=$HOME/.nodebrew/current/bin:$PATH
export PATH=/usr/local/bin:$PATH

となっていますが、
export PATH=$HOME/.nodebrew/current/bin:\SPATH
をコピーして読み込ません感じですか?
[/speech_bubble]

[speech_bubble type=”ln” subtype=”L1″ icon=”chinju.jpg” name=”chinjuさん”]
その行(export PATH=$HOME/.nodebrew/current/bin:\SPATH)が不要なんじゃないですかね。
なんか nodebrew の path 読み込みおおいですねw
したから2, 3 行目いらんとおもいます。
[/speech_bubble]

[speech_bubble type=”ln” subtype=”R1″ icon=”yuta.png” name=”yuta”]確かに重複してますねw
もしかたら、さっきPATHを削除したりした際に量産しちゃったかも。。[/speech_bubble]

最後に

初心者ほどtypo(タイピングミス)や早とちりが多いので、コードを書くときは落ち着いて記述するようにしましょう!

コメント