1. TOPTOP
  2. Webサービス
  3. Node.js

anyenvをインストールしたときに環境変数($PATH)の設定を間違える。その修正方法について

|

anyenv_pathvariable_error_1

手元のMacでNode.jsとフレームワークのExpressを使いたくなったので、env(新しいタブで開く)(環境変数を設定してコマンドを実行するときに使うコマンド)をまとめて管理出来るようにした環境管理ツールのanyenvをインストールすることにしました。

anyenvの正しいインストール方法

Node.jsのバージョンを管理するためのツールである「anyenv」のインストールの方法はこちらのページが参考になります。

これらの記事に書かれている通りに行えば、anyenvをインストールすることができます。

間違ってanyenvのインストール

ですが、自分の場合よく意味を理解しないで操作をしたため、誤った環境変数の設定を行ってしまいました。そもそも「パスを通す」という意味がよく分かっていなかったので、3回もexportコマンドを実行していました。なおかつ2回目のパスにいたってはホームディレクトリの記述すら間違っています。

間抜けなパスを作成

$ export PATH=$HOME/.anyenv/bin:$PATH
$ eval "$(anyenv init -)"
$ export PATH=/Users/MYNAME//.anyenv/bin:$PATH
$ eval "$(anyenv init -)"
$ export PATH=/Users/MYNAME/.anyenv/bin:$PATH
$ eval "$(anyenv init -)"

もちろん環境設定をするのは1回で十分です。echoコマンドでパスの設定を確認すると、間抜けなパスが通っていることが分かります(汗

$ echo $PATH
/Users/MYNAME/.anyenv/bin:/Users/MYNAME//.anyenv/bin:/Users/MYNAME/.anyenv/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/git/bin

間抜けなパスではanyenvはインストールできない

$ source ~/.bash_profile

とりあえず間抜けなパスの状態でプロファイル設定をします。

$ anyenv install rbenv
Install rbenv succeeded!
Please reload your profile (exec $SHELL -l) or open a new session.
$ anyenv install ndenv
Install ndenv succeeded!
Please reload your profile (exec $SHELL -l) or open a new session.

「お、これでもちゃんとrbenvやndenvがインストールできるやん!」と喜んでいたら、

$ anyenv version
/Users/MYNAME/.anyenv/libexec/anyenv-version: line 12: ndenv: command not found
ndenv: 
/Users/MYNAME/.anyenv/libexec/anyenv-version: line 12: rbenv: command not found
rbenv: 

「そんなコマンドはない」とやはり叱られました、当たり前ですが。

ディレクトリ・ファイル・環境変数の設定をすべて削除

間違ったパスを通した場合、以下のコマンドで作成したディレクトリ、ファイル、環境設定などすべて削除します

ダウンロードした.anyenvのディレクトリの削除

$ pwd
/Users/MYNAME
$ rm -rf .anyenv

.bash_profileファイルの削除

$ pwd
/Users/MYNAME
$ rm -rf .bash_profile

環境設定の無効化

$ export PATH=`echo -n $PATH | sed 's#/Users/MYNAME/:##'`;
$ echo $PATH
/Users/MYNAME/.anyenv/envs/rbenv/shims:/Users/MYNAME/.anyenv/envs/rbenv/bin:/Users/MYNAME/.anyenv/envs/ndenv/shims:/Users/MYNAME/.anyenv/envs/ndenv/bin:/Users/MYNAME/.anyenv/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/git/bin

間違った環境変数の設定はsedコマンドで置換し、従前の設定はなかったことにします(ただパスを確認すると、以前のパスはなぜか残ります)。

export PATH=echo -n $PATH | sed 's/\/home\/vagrant\/myapp\://';

ちなみに”sed ‘s#/Users/MYNAME/:##'”で使われている”#(シャープ)”記号は、区切り文字を表します。したがって、”\(バッククォート)”を用いることができます。

anyenvを再インストール

環境変数($PATH)の意味を理解した上で、もう一度anyenvをインストールします。

anyenvをGitHubからクローン

$ pwd
/Users/MYNAME
$ git clone https://github.com/riywo/anyenv ~/.anyenv
Cloning into '/Users/MYNAME/.anyenv'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 296 (delta 0), reused 1 (delta 0), pack-reused 293
Receiving objects: 100% (296/296), 46.02 KiB | 252.00 KiB/s, done.
Resolving deltas: 100% (114/114), done.

.bash_profileにパスを書き込み

$ pwd
/Users/MYNAME
$ vi .bash_profile
#!/bash/profile
export PATH=$HOME/.anyenv/bin:$PATH
eval "$(anyenv init -)"
:wq

rbenvとndenvのインストール

$ source ~/.bash_profile
$ anyenv install rbenv
...
Install rbenv succeeded!
$ anyenv install ndenv
...
Install ndenv succeeded!

anyenvとNode.jsのバージョン確認

anyenv_pathvariable_error_1

$ anyenv version
ndenv: system (set by /Users/HiroshiFukui/.anyenv/envs/ndenv/version)
rbenv: system (set by /Users/HiroshiFukui/.anyenv/envs/rbenv/version)
$ ndenv install -l

Node.jsのバージョンを確認すると、画像の通りいろいろと選べることが分かります。今回の記事で一番ポイントになる点はsedコマンドの活用した置換作業(新しいタブで開く)でしょう。