blog.euxn.me

pyenv/rbenv/nvm等の設定をbashrc/bash_profileに追記したのにコマンドが使えない場合

2016-05-01 Sun.

必要なものをダウンロードし設定を記述したはずなのに「pyenv が動かない」「nvm がみつからない」、ということがたまにあります。 正常にインストールされていればだいたい以下が原因だと思います。以下で解決しない場合は正常にインストールされていない可能性があります。

  1. shell を再起動していない

    .bashrc は shell のログイン時に読み込まれるものなので、記述後に再起動しないと反映されません。 shell の再起動はexec $SHELL -lコマンドで実行することができます。(ログイン shell に設定されているもので再ログインを行います。) 何かと再起動する場面は多いので、alias を張っておくと便利です。

  2. .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 の使ひ分け
  1. 設定が.bashrc/.bash_profile に記述されていない

    $ echo hogehoge > .bash_profileなどを行った場合にたまにあります。 どこか作業ディレクトリに.bash_profile を作成してしまっていることがあります。 記事内での説明コマンドが > ~/.zshrcだったり、各自適切に書き換えることを前提として > ~/.your_profileだったりすることもあります。 anyenvを使っている場合は、github のコマンド例が.your_profile を指しているので注意が必要です。

  2. 記述している path が別ユーザを指している

    サイトに書いてある通りのコマンドを追記した場合、それが自分のホームディレクトリを指していない可能性があります。 /root/.pyenvなどとなっている場合は、$HOME/.pyenv ~/.pyenv等に修正することで動作します。 類似の案件として、別のユーザのホームディレクトリに配置されているということもあります。root 直下にあったりとか。

  3. zsh を使用している

    あなたの shell が bash でない場合、.bashrc を読み込んでいないことがあります。 bash/zsh がよくわからない場合、何かのサイトに言われるがままに環境を整えてしまった場合など、こういうことがあります。 (勧められて zsh にしたら色々なコマンドが使えなくなった、とかいう若い思い出があります。) 画面が綺麗だったりすると zsh かもしれません。echo $SHELLで現在の shell が何であるかでてきます。 chsh -s /bin/bashで bash に戻すか、shell を少し勉強して zsh を使うかがいいと思います。

  4. [番外編] ubuntu に入れた node がみつからない

    apt-get だとnodejsコマンドが使用できるようになります。nodeコマンドではありません。 nodesource を使っても同じです。 以下の記事のように、node と名前を変えると node コマンド及び node コマンドを探す各種ツール等が使えます。 逆に、後々何かおかしい場合は、以下の手続きを行ったことがもしかしたら何かの原因になるかもしれないので、このような処理を行ったことは記録しておきましょう。

Ubuntu で apt を使用して Node.js をインストールする 3 つの方法(Ubuntu 15.04, Ubuntu 14.04.2 LTS)

上記で解決しない場合は正しくダウンロードされていない可能性があります。 .pyenv ディレクトリ等がみつからないなどの場合は、ダウンロードコマンドを見直してみるなどをお勧めします。

Other Works
2024-12-01 Sun.
OpenAPI Spec を出力できる DSL、TypeSpec の実践例
- ドワンゴ教育サービス開発者ブログ

2024-11-16 Sat.
型付き API リクエストを実現するいくつかの手法とその選択
- TSKaigi Kansai 2024

2024-09-10 Tue.
corepack が標準同梱じゃなくなる未来、 mise でパッケージマネージャを管理する
- Zenn

2024-09-10 Tue.
言語環境の管理は *env や *vm を超えて、 mise へ
- Zenn

2024-06-28 Fri.
TypeSpec を使い倒してる
- Kyoto.js 22

2024-05-11 Sat.
Powerfully Typed TypeScript
- TSKaigi 2024

2024-05-10 Fri.
pnpm の node_modules を探検して理解しよう
- ドワンゴ教育サービス開発者ブログ

2024-03-17 Sun.
neverthrow で局所的に Result 型を使い、 try-catch より安全に記述する
- Zenn

2023-12-20 Wed.
レガシーブラウザ向けのビルドオプションを剪定する
- ドワンゴ教育サービス開発者ブログ

2023-05-26 Fri.
Next.js で dynamic import を使い Client だけで動かす Component を実現する
- Zenn

2023-05-02 Tue.
Node.js でファイル名から拡張子を取り除く/取り出すために path.parse を使う
- Zenn

2023-02-27 Mon.
WSL2 で外部からアクセス可能にするために bridge mode を有効にする
- Zenn

2023-01-26 Thu.
init.vim & dein から init.lua & lazy.nvim へ、シンプル設定で移行した
- Zenn

2023-01-13 Fri.
kindle の本をブクログ形式の csv でエクスポートする@2023初春
- Zenn

2023-01-10 Tue.
自宅サーバの移設に際して docker から nerdctl に移行した
- Zenn

2023-01-10 Tue.
自宅サーバを rootless に移行した際のトラブル対応
- Zenn

2021-11-11 Thu.
並列実行した Promise で throw されても全てハンドルしたいときの方法(allSettled, finally, etc...)
- Zenn