なぜ私はこのエラーを修正することができます/どのように修正できますか:「shell_session_update:command not found」


24

バックグラウンド

OS X El Capitan(10.11.3)を使用するMacBookで、このページにリストされている統合を使用して、魚のシェルを使用して、Ruby 2.xおよびRails 4.xを使用しています:RVM-Fish Shell(Integration)

問題

などの各種コマンド実行時rvm versionrvm install ...rvm use ...rvm --default ...、など、私は、次のエラーメッセージを表示します

/var/folders/2w/zhgybz7d25s1gdy41qdxwp48001gfh/T/rvm.fish.Pqd0CuZRJW: shell_session_update: command not found

Googleのクイック検索では、他の多くの開発セットアップの問題で機能していたように、問題の特定や修正に役立つ関連する結果は返されません。

rvm.fish関数ファイル、.config/fishディレクトリの下、および$HOME/.rvm/bin/rvmメインの実行可能ファイル内で簡単なテキスト検索を行いましたがshell_session_update、そのファイルで直接呼び出されるなどのコマンドは表示されませんでした。

質問

なぜこれが起こっているのか、どのように修正できるのか誰にも分かりますか?私は自分の前にあるものを修正するのが好きな人なので、行動を起こす必要があるものだけが私の前に現れるので、このエラー/警告メッセージを削除したいと思います。:)

PSインストールして使用しようとした特定のRubyバージョン(2.0.0)は、同じ端末(iTerm(2))セッションであっても、再起動することなく適切に機能しているようです。その後、そのセッションを閉じて新しいターミナルセッションを作成しましたが、前述のさまざまなコマンドを実行するとメッセージが表示されます。


shell_session_updateはXでOS XによってインストールされるBash関数/etc/bashrc_Apple_Terminalであるため、おそらくRVMが実行するBashコマンドの何かが出力として生成しています。
ザンチー

回答:


41

TL; DR:コマンドを再インストールまたは発行することにより、RVMが少なくとも1.26.11に最新であることを確認し、rvm get head端末環境ごとに1回だけ初期化されます。

結果

最終的に、環境を修正することができました。他の人は同じ症状であるが別の根本原因があるかもしれないが、私は特定の問題に関するいくつかの情報を投稿するつもりです。

原因

根本的な問題の一部はRVMに起因しており、それがコマンドライン環境でどのように初期化されていたかです。特に、fishシェル環境用に特別な方法が1つ作成されているため、これを行うためのいくつかの異なる方法を見つけました。

根本的な原因は次のいずれかだったようです。

  • RVMを複数回初期化したのは、端末構成ファイルごとに1つの複数のステートメントがあり、それらがどのようにチェーンされているかによって、自動的に追加される他のステートメントに気づいていませんでした。
  • または、何らかの方法で、ある端末環境の初期化を混合するステートメントが追加され、たとえばfish、他の端末環境で実行されていましたbash。これは、壊れたところ、以下の私の詳細を見ることができbashPATHがで区切られたパスのいくつか持って:正しくないための構文である、スペースで秒が、その後、他の人も含まれ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し、問題が解決した後に最終的に実行したときのものです。

rvm get headその後、rvm reinstall {version}各バージョンのために私のために固定してしまった
TomFuertes

1
curlインストール方式を使用する場合:curl -sSL https://get.rvm.io | bash -s head --ruby
rynop

この答えは金です​​。便利で徹底的。
TehShrike

bash-git-promptをインストールした後、この「問題」がありました。rvmの再インストールはあまりにも多くのように思えました。だから私<rvm sourcing line>は私の最後に移動した.bash_profile。一定。
西暦

ここで参照されている他のエラーメッセージを修正しました。stackoverflow.com / questions / 18276701 / …「警告!PATHが適切に設定されていません。たぶん、この問題に似た別の場所に調達ラインがありましたか?それはまったく理にかなっていませんが、何でも可能です。
ピシス

5

私も同じ問題を抱えていました。後で、このためのrvmリポジトリに既に問題があることがわかりました。そして、彼らはプルリクエストの一つでそれを修正しました。

これを修正するには、rvmを最新バージョンにアップグレードするか、現在の開発リビジョンを指定します。

rvm get head

詳細については、この投稿を参照しください。


1
リンクから関連する部分を引用してもらえますか?それ以外の場合は、自分のブログを宣伝しようとしているように見えます。
ブルギ

これはtravis
ci /
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.