TL; DR:コマンドを再インストールまたは発行することにより、RVMが少なくとも1.26.11に最新であることを確認し、rvm get head
端末環境ごとに1回だけ初期化されます。
結果
最終的に、環境を修正することができました。他の人は同じ症状であるが別の根本原因があるかもしれないが、私は特定の問題に関するいくつかの情報を投稿するつもりです。
原因
根本的な問題の一部はRVMに起因しており、それがコマンドライン環境でどのように初期化されていたかです。特に、fish
シェル環境用に特別な方法が1つ作成されているため、これを行うためのいくつかの異なる方法を見つけました。
根本的な原因は次のいずれかだったようです。
- RVMを複数回初期化したのは、端末構成ファイルごとに1つの複数のステートメントがあり、それらがどのようにチェーンされているかによって、自動的に追加される他のステートメントに気づいていませんでした。
- または、何らかの方法で、ある端末環境の初期化を混合するステートメントが追加され、たとえば
fish
、他の端末環境で実行されていましたbash
。これは、壊れたところ、以下の私の詳細を見ることができbash
PATHがで区切られたパスのいくつか持って:
正しくないための構文である、スペースで秒が、その後、他の人も含まれbash
ますが、ために正しいですfish
。
- または両方が起こっていました!
次に、根本的な問題の他の部分は、RVM / direnvに関連するバグがトラップ機能に関して最近忍び寄ったように見えることでした。私はおそらく、RVMの他の問題のあるリリースの1つを持っていることによって再び遭遇しました:
- 再インストール:
curl -sSL https://get.rvm.io | bash
- 手動更新:
rvm get head
- に追加
rvm_autoupdate_flag=2
することによる自動更新(たった今行った)~/.rvmrc
この問題は、2016年3月30日、またはリリース1.26.11の時点で修正されるはずです。
物語
GNUユーティリティと戦い、ファイルシステムを完全に検索し、ファイルの内容を覗き込んだ後、Atomを使用してこれをさらに成功させ、Zancheyが言及shell_session_update
した/etc/bashrc_Apple_Terminal
ファイル(履歴ファイル以外に)が見つかったことを発見しましたなど)。また、iTerm(2)を使用していたのでなぜ実行されていたのかもわかりません。$TERM_PROGRAM
その場合の値はであり、ではiTerm.app
ありませんApple_Terminal
。
また、何らかの理由で、手動でいくつかの行を追加したいくつかの「ドットファイル」に設定を追加するインストールプロセスを経て、RVMインストールを複数回管理しなければならなかったのも助けにはなりませんでした。
それに加えて、明らかにデフォルトでは存在しなかったので、Mac .bashrc
からファイルを作成してリンクしました.bash_profile
。慣例.bash_profile
として、一部のカスタマイズに.bashrc
適し、ユーザーエイリアスと関数の定義など、他のカスタマイズにも適しているLinuxシステムで以前読んだことがあります。そのため、.bash_profile
ファイル内、特にファイル内を見ることに慣れていませんでした.profile
。すべてユーザーディレクトリにあり、同様のシステムが同様にコピーします。また、a path_helper
がmix(!)に含まれていることも忘れないでください。ただし、問題の原因にはならなかったようです。
環境をセットアップするための可能な方法は、正しい場合もそうでない場合もありますが、次のとおりです。
詳細
信じられないほどの冗長性のために、問題のデバッグ中にさまざまな環境でキャプチャしたパスの例を以下に示します。
元の(壊れた)魚のパス
/Users/username/.rvm/gems/ruby-2.0.0-p648/bin /Users/username/.rvm/gems/ruby-2.0.0-p648@global/bin /Users/username/.rvm/rubies/ ruby-2.0.0-p648 / bin /Users/username/.rvm/bin / usr / local / bin / usr / bin / bin / usr / sbin / sbin / usr / local / munki /Users/username/.rvm/ビン
「自然に」良い魚の経路
/ usr / local / opt / coreutils / libexec / gnubin / usr / local / opt / findutils / bin / usr / local / bin / usr / bin / bin / usr / sbin / sbin / usr / local / munki
元の(壊れた)bash PATH
/libexec/gnubin:/bin:/Users/username/.rvm/gems/ruby-2.0.0-p648/bin /Users/username/.rvm/gems/ruby-2.0.0-p648@global/bin / Users /username/.rvm/rubies/ruby-2.0.0-p648/bin /Users/username/.rvm/bin / usr / local / bin / usr / bin / bin / usr / sbin / sbin / usr / local / munki :/Users/username/.rvm/bin
「手動で」bashパスを修正
/libexec/gnubin:/bin:/Users/username/.rvm/gems/ruby-2.0.0-p648/bin:/Users/username/.rvm/gems/ruby-2.0.0-p648@global/bin: /Users/username/.rvm/rubies/ruby-2.0.0-p648/bin:/Users/username/.rvm/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin: /sbin:/usr/local/munki:/Users/username/.rvm/bin:/Users/username/.rvm/bin
「当然」より良いbash PATH
/ usr / local / opt / coreutils / libexec / gnubin:/ usr / local / opt / findutils / bin:/ usr / local / opt / coreutils / libexec / gnubin:/ usr / local / opt / findutils / bin:/ usr / local / bin:/ usr / bin:/ bin:/ usr / sbin:/ sbin:/ usr / local / munki
ノート:
- 「オリジナル」は、問題が発生している間にどちらかのコマンドラインインタープリターで新しい環境を開始することからのものでした。
- もちろん、「マニュアル」は、間違ったパス文字列を取り、構文エラーを修正し、インタープリターのより適切な操作を見たときです。そのため、根本原因を修正し続けるときに何を期待するかを知っていました。
- 「自然」は、端末環境設定ファイルなどのロードを最初にスキップ
.bashrc
し、問題が解決した後に最終的に実行したときのものです。
shell_session_update
はXでOS XによってインストールされるBash関数/etc/bashrc_Apple_Terminal
であるため、おそらくRVMが実行するBashコマンドの何かが出力として生成しています。