मैं क्यों हूँ / मैं इस त्रुटि को कैसे ठीक कर सकता / सकती हूँ: "shell_session_update: कमांड नहीं मिली"


24

पृष्ठभूमि

मैं रूबी 2.x और रेल्स 4.x में मिल रहा हूं, मैकबुक पर OS X El Capitan (10.11.3), फिश शेल का उपयोग करते हुए, इस पृष्ठ पर सूचीबद्ध एकीकरण को नियोजित करता है: RVM - फिश शेल (इंटीग्रेशन)

संकट

जब विभिन्न आदेशों को क्रियान्वित करने जैसे rvm version, rvm 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उस फ़ाइल में सीधे कॉल किए जाने जैसी कोई कमांड नहीं देखी ।

सवाल

क्या किसी को पता है कि ऐसा क्यों हो रहा है, और मैं इसे कैसे ठीक कर सकता हूं? मैं एक ऐसा व्यक्ति हूं जो मेरे सामने चीजों को ठीक करना पसंद करता है, ताकि मेरे सामने आने वाली चीजों पर केवल कार्रवाई करने की आवश्यकता हो, इसलिए मैं इस त्रुटि / चेतावनी संदेश को हटाना चाहूंगा। :)

पुनश्च एक विशेष रूप से रूबी संस्करण (2.0.0) जिसे मैं स्थापित करने और उपयोग करने का प्रयास कर रहा था, यह उचित रूप से उसी टर्मिनल (iTerm (2)) सत्र में भी काम करने लगता है, बिना इसे पुनरारंभ किए। मैंने तब से उस एक को बंद कर दिया है और एक नया टर्मिनल सत्र बनाया है, और अभी भी विभिन्न उपर्युक्त आदेशों को चलाने के दौरान संदेश दिखाई देता है।


shell_session_updateओएस एक्स द्वारा स्थापित एक बैश फ़ंक्शन है /etc/bashrc_Apple_Terminal, इसलिए संभवतः बैश कमांड में कुछ ऐसा है कि आरवीएम रन इसे आउटपुट के रूप में बना रहा है।
ज़ांकी

जवाबों:


41

TL; DR: सुनिश्चित करें कि RVM अप-टू-डेट है कम से कम 1.26.11 को री-इंस्टाल या कमांड जारी करके rvm get head, और इसे केवल एक बार प्रति टर्मिनल वातावरण में इनिशियलाइज़ किया जा रहा है।

परिणाम

आखिरकार मैं अपने वातावरण को ठीक करने में सक्षम हुआ। मैं कुछ की मदद करने के प्रयास में अपनी विशिष्ट समस्या से संबंधित कुछ जानकारी पोस्ट करूंगा, भले ही अन्य में एक ही लक्षण हो लेकिन एक और मूल कारण हो सकता है।

कारण

रूट समस्या का एक हिस्सा आरवीएम से आ रहा था, और यह मेरी कमांड लाइन के वातावरण के लिए कैसे आरंभ किया जा रहा था। मुझे ऐसा करने के लिए कुछ अलग तरीके मिले थे, खासकर जब से एक अतिरिक्त विधि विशेष रूप से fishशेल पर्यावरण के लिए तैयार की गई थी ।

ऐसा लगता है कि मूल कारण या तो था:

  • आरवीएम को एक से अधिक बार इनिशियलाइज़ करना, क्योंकि मेरे पास कई स्टेटमेंट्स थे, एक प्रति टर्मिनल कॉन्फ़िगरेशन फ़ाइल, और कैसे वे जंजीर थे, इसके कारण मुझे दूसरों के बारे में पता नहीं था जो स्वचालित रूप से जोड़े गए थे।
  • या, किसी तरह बयान जोड़े गए थे कि एक टर्मिनल पर्यावरण के लिए इनिशियलाइज़ेशन को मिलाया, कहते हैं fish, और मेरे अन्य टर्मिनल वातावरण में चलाया जा रहा था bash, या वर्सा लेना चाहिए। यह नीचे मेरे विवरण में देखा जा सकता है, जहां टूटे हुए bashपथ में कुछ पथों को सी द्वारा सीमांकित किया गया है :, लेकिन फिर अन्य को भी रिक्त स्थान द्वारा शामिल किया गया है, जो कि गलत सिंटैक्स है bash, लेकिन इसके लिए सही है fish
  • या दोनों हो रहे थे!

तब रूट की समस्या का दूसरा हिस्सा यह था कि ऐसा लगता है कि आरवीएम / डेरेनव संबंधित बग क्रेप्ड फंक्शन के संबंध में हाल ही में सामने आए थे। आरवीएम के अन्य समस्याग्रस्त रिलीज में से एक होने के कारण मुझे शायद फिर से इसका सामना करना पड़ा:

  • एक फिर से स्थापना: curl -sSL https://get.rvm.io | bash
  • एक मैनुअल अपडेट: rvm get head
  • एक स्वत: अद्यतन (है कि मैं सिर्फ किया था) जोड़कर rvm_autoupdate_flag=2करने के लिए~/.rvmrc

इस समस्या को 30 मार्च, 2016 या 1.26.11 जारी किया जाना चाहिए।

कहानी

फ़ाइल सिस्टम की पूरी खोज करने के लिए GNU उपयोगिताओं के साथ लड़ने के बाद, फ़ाइल सामग्री के अंदर झांकते हुए, मैंने एटम को अधिक सफलता के लिए ऐसा करने के लिए उपयोग किया, और पाया कि केवल ज़ेन्ची द्वारा उल्लिखित फ़ाइल shell_session_updateमें पाया गया था /etc/bashrc_Apple_Terminal(इसके अलावा फ़ाइलों के अलावा) और ऐसा)। मुझे यह भी पता नहीं है कि मुझे क्यों चलाया जा रहा था क्योंकि मैं iTerm (2) का उपयोग कर रहा था, और $TERM_PROGRAMउस मामले का मूल्य है iTerm.appऔर नहीं Apple_Terminal

यह भी मदद नहीं करता है कि मैं, किसी कारण से, आरवीएम स्थापना को एक से अधिक बार प्रबंधित करना पड़ा, स्थापना प्रक्रिया से गुजरना, जो जाहिरा तौर पर पहले से ही कई 'डॉटफाइल्स' में कॉन्फ़िगरेशन जोड़ता है, जहां मैंने मैन्युअल रूप से कुछ या लाइनें भी जोड़ी थीं ।

इसके साथ ही मैंने एक .bashrcफ़ाइल बनाई थी और इसे .bash_profileअपने मैक से लिंक किया था, क्योंकि यह स्पष्ट रूप से डिफ़ॉल्ट रूप से मौजूद नहीं था। मैंने पहले एक लिनक्स सिस्टम पर पढ़ा था कि, कन्वेंशन द्वारा, .bash_profileकुछ अनुकूलन के लिए अच्छा है, और .bashrcदूसरों के लिए अच्छा है जैसे उपयोगकर्ता उपनामों और कार्यों को परिभाषित करना, या इसके विपरीत। इसलिए मैं .bash_profileफ़ाइल के अंदर देखने का आदी नहीं था , और विशेष रूप से .profileफ़ाइल नहीं , सभी उपयोगकर्ता निर्देशिका में, जो समान सिस्टम प्रतियां भी। चलो path_helperमिश्रण में भी एक को मत भूलना (!), लेकिन किसी भी समस्या में योगदान नहीं दिया।

पर्यावरण को स्थापित करने के संभावित तरीके, जो सही हो सकते हैं या नहीं, इस प्रकार हैं:

अधिक जानकारी

अधिक अविश्वसनीय वर्बोसिटी के लिए, यहां कुछ उदाहरण पथ हैं जिन्हें मैंने विभिन्न वातावरणों के बीच समस्या को डीबग करते हुए कैप्चर किया है:

मूल (टूटी हुई) मछली PATH

/User/username/.rvm/gems/ruby-2.0.0-p648/bin/Users/username/.rvm/gems/ruby-2.0.0-p648@global/bin/Users/username/.rvm/rubies/ रूबी-2.0.0-p648 / bin /Users/username/.rvm/bin / usr / local / bin / usr / bin / usr / sbin / sbin / usr / local / munu /User/username/.rvm/ बिन

'स्वाभाविक रूप से' बेहतर मछली पाथ

/ usr / स्थानीय / ऑप्ट / coreutils / libexec / gnubin / usr / स्थानीय / ऑप्ट / findutils / बिन / usr / स्थानीय / बिन / usr / बिन / usr / sbin / sbin / usr / स्थानीय / munki

मूल (टूटा हुआ) बाट पाथ

/libexec/gnubin:/bin :/User/username/.rvm/gems/ruby-2.0.0-p648/bin/User/username/.rvm/gems/ruby-2.0-p648@global/bin/ उपयोगकर्ता /username/.rvm/rubies/ruby-2.0.0-p648/bin /Users/username/.rvm/bin / usr / local / bin / usr / bin / us / sbin / sbin / usr / लोकल / मुनकी : /Users/username/.rvm/bin

'मैन्युअल रूप से' फिक्स्ड बैश पैट

/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

'स्वाभाविक रूप से' बेहतर बैश PATH

/ Usr / स्थानीय / opt / coreutils / libexec / gnubin: / usr / स्थानीय / opt / findutils / बिन: / usr / स्थानीय / opt / coreutils / libexec / gnubin: / usr / स्थानीय / opt / findutils / बिन: / usr / स्थानीय / बिन: / usr / bin: / बिन: / usr / sbin: / sbin: / usr / स्थानीय / munki

टिप्पणियाँ:

  • समस्या होने के दौरान कमांड लाइन दुभाषिया में 'मूल के ब्रांड नए वातावरण को शुरू करने से थे।
  • 'मैनुअल' निश्चित रूप से तब होता है जब मैंने गलत पथ स्ट्रिंग लिया, वाक्यविन्यास त्रुटियों को ठीक किया, और दुभाषिया के अधिक उचित संचालन को देखा, इसलिए मुझे पता था कि जब मूल कारण को ठीक करना जारी रखना है तो क्या उम्मीद की जाए।
  • 'नेचुरल' तब से थे जब मैंने पहली बार अपनी टर्मिनल एनवायरनमेंट कॉन्फिगरेशन फाइल्स जैसे कि लोडिंग को स्किप किया .bashrcथा और आखिरकार प्रॉब्लम सॉल्व होने के बाद उन्हें चलाया था।

rvm get headऔर फिर rvm reinstall {version}प्रत्येक संस्करण के लिए मेरे लिए फिक्सिंग खत्म हो गई
टॉमफर्ट्स

1
अगर कर्ल इंस्टॉल विधि का उपयोग कर रहे हैं:curl -sSL https://get.rvm.io | bash -s head --ruby
rynop

यह उत्तर सोना है। उपयोगी और संपूर्ण।
तेहरिशके

बैश-गिट-प्रॉम्प्ट को स्थापित करने के बाद मुझे यह "समस्या" थी। Rvm को पुनः स्थापित करना बहुत ज्यादा अच्छा लग रहा था । इसलिए मैं <rvm sourcing line>अपने अंत में बस गया .bash_profile। फिक्स्ड।
AD

मैंने आमतौर पर पाया है कि इस अन्य त्रुटि संदेश को यहां संदर्भित किया गया है: stackoverflow.com/questions/18276701/ ... "चेतावनी! पेट ठीक से सेट नहीं किया गया है ”शायद आपके पास कहीं और सोर्सिंग लाइनें थीं जो इसे इस मुद्दे के समान बनाती हैं? यह बिल्कुल समझ में नहीं आएगा, लेकिन कुछ भी संभव है।
14

5

मेरी भी यही समस्या थी। बाद में मैंने पाया कि इसके लिए rvm रेपो में पहले से ही एक मुद्दा मौजूद है। और उन्होंने इसे पुल अनुरोधों में से एक में तय किया है।

इसे ठीक करने के लिए या तो आरवीएम को नवीनतम संस्करण में अपग्रेड करें या वर्तमान विकास संशोधन को इंगित करें।

rvm get head

अधिक जानकारी के लिए इस पोस्ट को देखें ।


1
क्या आप लिंक से संबंधित भागों को उद्धृत कर सकते हैं? अन्यथा ऐसा लगता है कि आप अपने स्वयं के ब्लॉग को बढ़ावा देने की कोशिश कर रहे हैं।
बरगी

यह ट्रैविस में काम नहीं करता है, github.com/travis-ci/travis-ci/issues/9511
timotheecour
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.