手元のMacでNode.jsとフレームワークのExpressを使いたくなったので、env(環境変数を設定してコマンドを実行するときに使うコマンド)をまとめて管理出来るようにした環境管理ツールのanyenvをインストールすることにしました。
anyenvの正しいインストール方法
Node.jsのバージョンを管理するためのツールである「anyenv」のインストールの方法はこちらのページが参考になります。
- Node.js の管理を「nodebrew」から「anyenv」に変更。 Ruby も Node.js でプロジェクトごとに使うバージョンを切り替える環境にしてみた – HAM MEDIA MEMO
- Nodeのバージョン管理をndenvにし、それに合わせてanyenvを導入したのでメモ YATのBLOG
これらの記事に書かれている通りに行えば、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 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コマンドの活用した置換作業でしょう。