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 -が実行できていなかったようです。 コメントアウトしてやることで現状は打破しました。

似たような症状の人の助けになれば幸いです。