Neden bu hatayı düzeltebilirim / nasıl düzeltebilirim: “shell_session_update: command not found”


24

Arka fon

OS X El Capitan (10.11.3) kullanan bir MacBook'ta Ruby 2.x ve Rails 4.x'e giriyorum, balık kabuğunu kullanarak, bu sayfada listelenen entegrasyonu kullanarak: RVM - Fish Shell (Integration)

Sorun

Çeşitli komutlar yürütürken gibi rvm version, rvm install ..., rvm use ..., rvm --default ..., vb, ben şu hata iletisi:

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

Hızlı Google araması, diğer geliştirme kurulum sorunlarımın çoğunda çalıştığı gibi, sorunu tanımlamam ve / veya düzeltmeme yardımcı olacak herhangi bir sonuç getirmiyor.

rvm.fishİşlevler dosyasında, .config/fishdizinin altında ve ayrıca $HOME/.rvm/bin/rvmana çalıştırılabilir dosya içinde hızlı bir metin araması yaptım ve shell_session_updatedoğrudan o dosyada çağrılan bir komutu görmedim .

Soru

Bunun neden olduğunu ve bunu nasıl düzeltebileceğimi bilen var mı? Ben önümdeki şeyleri düzeltmeyi seven bir insanım, bu yüzden sadece eylemde bulunmam gereken şeyler önümde göründüğü için, bu hatayı / uyarı mesajını kaldırmak istiyorum. :)

PS Kurmaya ve kullanmaya çalıştığım özel bir Ruby sürümü (2.0.0), aynı terminal (iTerm (2)) oturumunda bile, yeniden başlatmak zorunda kalmadan, uygun şekilde çalışıyor gibi görünüyor. O zamandan beri bunu kapattım ve yeni bir terminal oturumu yarattım ve daha önce bahsedilen çeşitli komutları çalıştırırken mesajın göründüğünü gördüm.


shell_session_updateOS X tarafından yüklenen bir Bash işlevi /etc/bashrc_Apple_Terminalolduğundan, RVM'nin çalıştığı Bash komutlarındaki bir şey çıktı olarak üretiyordur.
Zanchey

Yanıtlar:


41

TL; DR: RVM'nin komutu yeniden yükleyerek veya vererek en az 1.26.11'e kadar güncel olduğundan ve rvm get headterminal ortamı için yalnızca bir kez başlatıldığından emin olun.

Sonuç

Sonunda çevremi düzeltebildim. Bazıları aynı belirtiye sahip olsalar da, başka bir kök nedene sahip olsalar bile, bazılarına yardım etmek için özel sorunumla ilgili bazı bilgiler yayınlayacağım.

Sebeb olmak

Kök sorunun bir bölümü RVM'den geliyordu ve komut satırı ortamlarım için nasıl başlatıldığını gösteriyor. Bunu yapmanın birkaç farklı yolunu bulmuştum, özellikle de fishkabuk ortamı için özel olarak ek bir yöntem üretildi .

Kök neden ya da görünüyordu:

  • RVM'yi bir defadan fazla başlatmak, terminal konfigürasyon dosyası başına bir defa ifade ettiğim ve zincirleme şekli nedeniyle, otomatik olarak eklenen diğerlerinin farkında değildim.
  • Veya, bir şekilde, bir terminal ortamı için ilklendirmeyi karıştırıp, fishdiğer terminal ortamımda çalıştırıldığını bashveya bunun tersi olduğunu söyleyen ifadeler eklendi . Bu, bozuk bashPATH’in :s tarafından sınırlandırılmış yollardan bazılarının bulunduğu , ancak daha sonra da diğerleri için yanlış sözdizimi olan bashancak bunun için doğru olan boşlukların içerdiği ayrıntılarımda görülebilir fish.
  • Ya da her ikisi de oluyordu!

Ardından, kök sorunun diğer bir bölümü, RVM / direnv ile ilgili bir hatanın, tuzak işlevi ile ilgili yakın zamanda sarıldığı görülüyordu. Muhtemelen, RVM'nin neden olabileceği diğer problemli yayınlardan birine sahip olduğumda tekrar karşılaştım:

  • Bir yeniden kurulum: curl -sSL https://get.rvm.io | bash
  • Manuel güncelleme: rvm get head
  • Ekleyerek bir otomatik güncelleme (Sadece yaptığını) rvm_autoupdate_flag=2için~/.rvmrc

Bu sorun 30 Mart 2016 veya daha sonra 1.26.11 sürümünden itibaren düzeltilmelidir:

Hikaye

GNU yardımcı programları ile dosya sistemi üzerinde tam bir arama yapmak için mücadele ettikten sonra dosya içeriğini incelemek için Atom'u daha başarılı olmak için kullandım ve bunun tek bir oluşumunun Zanchey tarafından belirtilen dosyada shell_session_updatebulunduğunu tespit /etc/bashrc_Apple_Terminalettim (tarih dosyaları dışında). ve benzeri). Ayrıca neden çalıştırıldığından da emin değilim çünkü iTerm (2) kullanıyordum ve $TERM_PROGRAMbu durumda ki değer iTerm.appdeğil Apple_Terminal.

Ayrıca, bir nedenden ötürü, RVM kurulumunu bir kereden fazla yönetmek zorunda kalmamıştım, görünüşe göre zaten birkaç 'nokta dosyasına' konfigürasyon ekleyen kurulum sürecinden geçtim, burada bazılarını veya satırlarını manuel olarak da ekledim. .

Bununla birlikte, bir .bashrcdosya yapmıştım ve Mac'imden ona bağlıydım .bash_profile, çünkü görünüşe göre varsayılan olarak yoktu. Daha önce, .bash_profilebazı kişiselleştirmeler .bashrciçin iyi olan ve kullanıcı takma adlarını ve işlevlerini tanımlama veya diğerleri için iyi olan bir Linux sisteminde okudum . Bu yüzden , benzer sistemin de kopyaladığı, tüm kullanıcı dizinindeki .bash_profiledosyanın içine, özellikle de dosyaya bakmaya alışkın değildim .profile. Unutmayalım ki a da path_helper(!) Karışımında, ancak herhangi bir soruna katkıda bulunmadığı görülüyor.

Ortamı kurmanın, doğru ya da doğru olmasının olası yolları şunlardır:

Daha fazla detay

Daha fazla inanılmaz ayrıntı için, problemin hatalarını ayıklarken farklı ortamlar arasında yakaladığım bazı örnek yollar:

Orijinal (kırık) balık YOLU

/Kullanıcılar / kullanıcı adı /. ruby-2.0.0-p648 / bin / Kullanıcı / kullanıcı adı /.rvm/bin / usr / yerel / bin / kullanıcı / bin / kutu / kullanıcı / sbin / sbin / kullanıcı / yerel / munki / kullanıcı / kullanıcı / kullanıcı adı /. çöp Kutusu

'Doğal olarak' daha iyi balık PATH

/ usr / yerel / opt / coreutils / libexec / gnubin / usr / yerel / opt / findutils / bin / usr / yerel / bin / usr / bin / bin / usr / sbin / sbin / usr / yerel / munki

Orijinal (kırılmış) 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 / Kullanıcılar /username/.rvm/rubies/ruby-2.0.0-p648/bin / Kullanıcı / kullanıcı adı/.rvm/bin / usr / yerel / bin / usr / bin / bin / usr / sbin / sbin / usr / yerel / munki : /Users/username/.rvm/bin

'El ile' Sabit 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:/Users/username/.rvm/bin

'Doğal olarak' daha iyi 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

Notlar:

  • 'Orijinal', problemi çözerken her iki komut satırındaki tercümandaki yepyeni ortama başlamaktan kaynaklanıyordu.
  • Tabii ki yanlış yol dizgisini aldığımda, sözdizimi hatalarını düzelttiğimde ve yorumlayıcının daha doğru çalıştığını gördüğümde 'el kitabı', kök nedenini düzeltmeye devam ederken ne bekleyeceğimi biliyordum.
  • 'Doğal', benim gibi çevre terminal yapılandırma dosyalarımı yüklemeyi ilk atladığım zamanlardı .bashrcve sonunda sorun çözüldükten sonra çalıştırılmalarını sağladı.

rvm get headve sonra rvm reinstall {version}her sürüm için benim için tamir sona erdi
TomFuertes

1
Curl yükleme yöntemini kullanıyorsanız:curl -sSL https://get.rvm.io | bash -s head --ruby
rynop

Bu cevap altın. Yararlı ve kapsamlı.
TehShrike

Bash-git-istemi yükledikten sonra bu "sorun" vardı. Rvm'yi tekrar kurmak çok naaah gibiydi . Böylece ben sadece <rvm sourcing line>içinde sonuna taşındım .bash_profile. Sabit.
AD

Ben genellikle burada belirtilen bu diğer hata iletisini düzelttiğimi gördüm: stackoverflow.com/questions/18276701/… “Uyarı! PATH uygun bir şekilde kurulmadı ”Belki de, bu konuya daha fazla benzetecek başka bir yerde kaynak hatları var? Bu tam olarak mantıklı olmaz, ama her şey mümkün.
Pysis

5

Bende de aynı problem vardı. Daha sonra bunun için rvm deposunda zaten bir sorun olduğunu gördüm. Ve bunu çekme isteklerinden birinde çözdüler.

Bunu düzeltmek için, ya rvm'yi en son sürüme yükseltin ya da mevcut geliştirme revizyonunu işaret edin.

rvm get head

Daha fazla ayrıntı için bu yazıya bakın .


1
İlgili bölümleri linkten alıntılayabilir misiniz? Aksi halde, kendi blogunuzu tanıtmaya çalışıyorsunuz gibi görünüyor.
Burgi,

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.