rbenv global ~~が切り替わらない。 homebrew で '/usr/local/bin/brew: line 79: /usr/bin/env: Argument list too long', '/usr/local/bin/brew: line 79: /usr/bin/env: Undefined error: 0'
結論 ~/.bash_profileにPATHを改変する記述があった。
export PATH="/usr/local/bin:$PATH"
状況
私はrubyを割と頻繁に記述をしているのですが、とあるプロダクトにて.ruby-version
を使った管理がありました、
ただ ruby -v
をしても。指定のヴァージョンにはなっておらず。
@fumihumi:which ruby /usr/local/bin/ruby
ruby のパスを見ているとなぜか。 '/usr/local/bin/ruby' ............
正しくは '.rbenv'を見にいって欲しいのだが。 @fumihumi:which ruby /Users/fumihumi/.rbenv/shims/ruby
色々調べてみると ’~/bash_profile’がおかしい。というパターンでのエラーが多いらしい。 そりゃ
if [ -f ~/.bashrc ] ; then . ~/.bashrc fi # rbenv export PATH="$HOME/.rbenv/bin:$PATH" eval "$(rbenv init -)"
と書いているからこれが読めれば動くよね。。という話。
まず確認したいことはコマンドで
eval "$(rbenv init -)"
として動くのか否か 基本的に環境が問題なければ
$which ruby /usr/local/bin/ruby $eval "$(rbenv init -)" $which ruby /Users/fumihumi/.rbenv/shims/ruby
このようにevalコマンドの後にPATHが変わります。
実際に私も変わってました。
無知な私はここで最大の過ちを犯します。
エンジニア人生のおわり\
systemのrubyを使ってるなら 削除すれば良くね?
>>>>>>>>>>>>ダメです!!!1
$ brew list を見ているとインストールした記憶のない ruby がいる、殺す。
@fumihumi:brew remove ruby Error: Refusing to uninstall /usr/local/Cellar/ruby/2.5.0_2 because it is required by vim 8.0.1300, vim 8.0.1171, vim 8.0.1600, which are currently installed. You can override this and force removal with: brew uninstall --ignore-dependencies ruby
なんか言われているけど消したいので。
brew uninstall --ignore-dependencies ruby
どーん!
と消す
消えたことを確認しよう。
brew list /usr/local/bin/brew: line 79: /usr/bin/env: Argument list too long /usr/local/bin/brew: line 79: /usr/bin/env: Undefined error: 0
a。?
あれ???
brew が使えない?
やばい。brewが使えないとどうにもできない。。
Homebrew(https://brew.sh/index_ja)を入れ直そう!。 しかし公式のインストーラでは。'/usr/bin/ruby'を見にいっている
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
これは実行できません。 (さっき吹き飛ばしたからね!w)
ではどうするのか。
...... rbenv入ってたよな。。。。。
@fumihumi: eval "$(rbenv init -)" @fumihumi:ruby -v ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-darwin16]
これでrubyコマンドは使える。 利用するRubyを変えればさっきのインストールがいけるはず。
@fumihumi:ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" ==> This script will install: /usr/local/bin/brew /usr/local/share/doc/homebrew /usr/local/share/man/man1/brew.1 /usr/local/share/zsh/site-functions/_brew /usr/local/etc/bash_completion.d/brew /usr/local/Homebrew ==> The following new directories will be created: /usr/local/sbin Press RETURN to continue or any other key to abort ==> /usr/bin/sudo /bin/mkdir -p /usr/local/sbin Password: ==> /usr/bin/sudo /bin/chmod g+rwx /usr/local/sbin ==> /usr/bin/sudo /bin/chmod 755 /usr/local/share/zsh /usr/local/share/zsh/site-functions ==> /usr/bin/sudo /usr/sbin/chown fumihumi /usr/local/sbin ==> /usr/bin/sudo /usr/bin/chgrp admin /usr/local/sbin ==> /usr/bin/sudo /bin/mkdir -p /Library/Caches/Homebrew ==> /usr/bin/sudo /bin/chmod g+rwx /Library/Caches/Homebrew ==> /usr/bin/sudo /usr/sbin/chown fumihumi /Library/Caches/Homebrew ==> Downloading and installing Homebrew... remote: Counting objects: 235, done. remote: Compressing objects: 100% (60/60), done. remote: Total 235 (delta 188), reused 210 (delta 174), pack-reused 0 Receiving objects: 100% (235/235), 44.01 KiB | 7.33 MiB/s, done. Resolving deltas: 100% (188/188), completed with 117 local objects. From https://github.com/Homebrew/brew 0851f967..0f4e22e2 master -> origin/master HEAD is now at 0f4e22e2 Merge pull request #3981 from MikeMcQuaid/rspec-cleanup /usr/local/bin/brew: line 79: /usr/bin/env: Argument list too long /usr/local/bin/brew: line 79: /usr/bin/env: Undefined error: 0 Failed during: /usr/local/bin/brew update --force
あれ、うまくいってない??????
懲りずに何度かチャレンジするとうまくいきました。
めでたし。
その後。
brew が使えるようになったのですが。結局
which ruby
の結果は変わらず同じでした。 ひらすら'.bash_profile'を眺める。
結論
結論 ~/.bash_profileにPATHを改変する記述があった。
export PATH="/usr/local/bin:$PATH"
環境変数の変更コードはコピペが多いのですが、その際に持ってきたのでしょう。
この一行があるだけで rbenv init -
が実行できていなかったようです。
コメントアウトしてやることで現状は打破しました。
似たような症状の人の助けになれば幸いです。