pyenv/rbenv/nvm等の設定をbashrc/bash_profileに追記したのにコマンドが使えない場合
必要なものをダウンロードし設定を記述したはずなのに「pyenv が動かない」「nvm がみつからない」、ということがたまにあります。 正常にインストールされていればだいたい以下が原因だと思います。以下で解決しない場合は正常にインストールされていない可能性があります。
-
shell を再起動していない
.bashrc は shell のログイン時に読み込まれるものなので、記述後に再起動しないと反映されません。 shell の再起動は
exec $SHELL -l
コマンドで実行することができます。(ログイン shell に設定されているもので再ログインを行います。) 何かと再起動する場面は多いので、alias を張っておくと便利です。 -
.bashrc の読み込み順序に問題がある
.bashrc と.bash_profile を両方使っている場合に発生することがあります。 .bash_profile を開いてみると、まず.bashrc を読み込んだあとに PATH を export していると、.bashrc で行った PATH の設定が上書きされてしまいます。 .bashrc の読み込みを後にするか、.bash_profile の PATH の export 以下に設定を記述することで解決します。 .bashrc と.bash_profile の書き分けについては以下の記事が詳しいです。これに則れば、.bashrc では PATH に触らないことが良さそうなので、.bash_profile に追記するのが良いのかと考えます。
本当に正しい .bashrc と .bash_profile の使ひ分け
-
設定が.bashrc/.bash_profile に記述されていない
$ echo hogehoge > .bash_profile
などを行った場合にたまにあります。 どこか作業ディレクトリに.bash_profile を作成してしまっていることがあります。 記事内での説明コマンドが> ~/.zshrc
だったり、各自適切に書き換えることを前提として> ~/.your_profile
だったりすることもあります。 anyenvを使っている場合は、github のコマンド例が.your_profile を指しているので注意が必要です。 -
記述している path が別ユーザを指している
サイトに書いてある通りのコマンドを追記した場合、それが自分のホームディレクトリを指していない可能性があります。
/root/.pyenv
などとなっている場合は、$HOME/.pyenv
~/.pyenv
等に修正することで動作します。 類似の案件として、別のユーザのホームディレクトリに配置されているということもあります。root 直下にあったりとか。 -
zsh を使用している
あなたの shell が bash でない場合、.bashrc を読み込んでいないことがあります。 bash/zsh がよくわからない場合、何かのサイトに言われるがままに環境を整えてしまった場合など、こういうことがあります。 (勧められて zsh にしたら色々なコマンドが使えなくなった、とかいう若い思い出があります。) 画面が綺麗だったりすると zsh かもしれません。
echo $SHELL
で現在の shell が何であるかでてきます。chsh -s /bin/bash
で bash に戻すか、shell を少し勉強して zsh を使うかがいいと思います。 -
[番外編] ubuntu に入れた node がみつからない
apt-get だと
nodejs
コマンドが使用できるようになります。node
コマンドではありません。 nodesource を使っても同じです。 以下の記事のように、node と名前を変えると node コマンド及び node コマンドを探す各種ツール等が使えます。 逆に、後々何かおかしい場合は、以下の手続きを行ったことがもしかしたら何かの原因になるかもしれないので、このような処理を行ったことは記録しておきましょう。
Ubuntu で apt を使用して Node.js をインストールする 3 つの方法(Ubuntu 15.04, Ubuntu 14.04.2 LTS)
上記で解決しない場合は正しくダウンロードされていない可能性があります。 .pyenv ディレクトリ等がみつからないなどの場合は、ダウンロードコマンドを見直してみるなどをお勧めします。