env: bash \ r: ऐसी कोई फ़ाइल या निर्देशिका नहीं


96

मैं यहाँ से YouCompleteMe स्थापित करने का प्रयास कर रहा हूँ ।

जब मैं निष्पादित करता हूं:

./install.sh --clang-completer

मुझे यह त्रुटि मिली:

env: bash\r: No such file or directory

मुझे नहीं पता कि पर्यावरण चर के साथ क्या गलत है। यहाँ मेरा रास्ता है:

which bash 
/bin/bash

क्या मुझे इसे बदलने की आवश्यकता है /usr/bash? यदि हाँ, तो मुझे ऐसा कैसे करना चाहिए? मैंने ~/.bashrcफ़ाइल बदलने की कोशिश की , लेकिन यह काम नहीं किया।


यदि आपकी त्रुटि एक त्रुटि थी, तो इसमें संभवतः "त्रुटि" शब्द होगा। यह अच्छा है कि "bash \ r" फ़ाइल नहीं मिली क्योंकि फ़ाइल नामों में "\" नहीं हो सकता है।
डेविड स्मोलिंस्की

एक त्वरित सुधार :) नोटपैड ++ संपादक में अपनी स्क्रिप्ट को संपादित करें और EOL रूपांतरण को UNIX (LF) में बदलें। मैंने EOL रूपांतरण को UNIX (LF) में बदलने के बाद भी इसी मुद्दे का सामना किया है, यह काम करना शुरू कर रहा है।
आर्यश्री प्रितिकृष्ण

जवाबों:


163

त्रुटि संदेश से पता चलता है कि आपके द्वारा लिखी गई स्क्रिप्ट में एम्बेडेड \rवर्ण हैं , जो बदले में सुझाव देता है कि इसमें विंडोज शैली की \r\nरेखा के बजाय \n-ऑन लाइन अंत की bashअपेक्षा है।

एक त्वरित सुधार के रूप में , आप \rवर्ण हटा सकते हैं । निम्नलिखित नुसार:

sed $'s/\r$//' ./install.sh > ./install.Unix.sh

नोट: $'...'स्ट्रिंग एक है एएनएसआई-सी उद्धृत स्ट्रिंग में समर्थित bash, ksh, और zsh। इसका उपयोग यह सुनिश्चित करने के लिए किया जाता है कि स्क्रिप्ट देखने से \rपहले एक वास्तविक सीआर चरित्र का विस्तार होता है sed, क्योंकि सभी sedकार्यान्वयन खुद \rको एक एस्केप अनुक्रम के रूप में समर्थन नहीं करते हैं।

और फिर चला

./install.Unix.sh --clang-completer

हालाँकि, बड़ा सवाल यह है कि आपने \r\n-स्टाइल फ़ाइलों को समाप्त क्यों किया है - सबसे अधिक संभावना है, अन्य फाइलें भी प्रभावित होती हैं।

शायद आप Windows पर Git चला रहे हैं , जहाँ एक विशिष्ट कॉन्फ़िगरेशन यूनिक्स-शैली- \nलाइन को तोड़ने के लिए Windows- शैली \r\nलाइन को तोड़ने के लिए फ़ाइलों की जाँच करने और पुन: परिवर्तित करने के लिए \n-only लाइन टूटने पर प्रतिबद्ध है

जबकि यह विंडोज पर विकास के लिए समझ में आता है , यह इन जैसे इंस्टॉलेशन परिदृश्यों के रास्ते में हो जाता है

Git की जाँच करने के लिए विंडोज पर यूनिक्स-शैली की फाइल के साथ फाइल की जाँच करें - कम से कम अस्थायी रूप से - उपयोग:

git config --global core.autocrlf false

फिर अपने इंस्टॉलेशन कमांड्स को git cloneफिर से शामिल करें।

बाद में गिट के व्यवहार को बहाल करने के लिए, चलाएं git config --global core.autocrlf true



17

आपकी फाइल में विंडोज लाइन एंडिंग है। यूनिक्स लाइन के अंत में बदलें।


14

कुछ इसी तरह भाग गया। आप dos2unix install.shलाइन अंत को बदलने के लिए उपयोग कर सकते हैं । के माध्यम से कई फाइलेंfind [pattern] | xargs dos2unix


1
आप उपयोग कर सकते हैं:find . -type f -exec dos2unix {} \;
s.ouchene

13

लाइन अंत को परिवर्तित करने के लिए त्वरित आदेश:

dos2unix thescript.sh

6

जैसा कि उपरोक्त टिप्पणियां कहती हैं, यह विंडोज़ लाइन के अंत के कारण हो रहा है। समस्या को हल करने के लिए निम्न चरणों का पालन करें

मैक के लिए:

brew install dos2unix # Installs dos2unix Mac
find . -type f -exec dos2unix {} \; # recursively removes windows related stuff

लिनक्स के लिए:

sudo apt-get install -y dos2unix # Installs dos2unix Linux
sudo find . -type f -exec dos2unix {} \; # recursively removes windows related stuff

और सुनिश्चित करें कि आपका git config निम्नानुसार सेट है:

git config --global core.autocrlf input

1
अंत में काम करना। मैं 2 दिनों के लिए इस मुद्दे का सामना कर रहा था और यह इस परियोजना से विंडोज़ लाइन की समाप्ति का था कि मैंने गितुब से क्लोन किया था और अंतिम रूप से आपका समाधान सही समाधान था। धन्यवाद।
रिद्धी

1
मुझे खुशी है कि यह आप में मदद की :) हूँ
साल्वी शहजाद

हाँ, यह जाग गया। धन्यवाद @salvishahzad
मोहित तोमर

5

मेरे मामले में मेरे पास गलत गिट कॉन्फ़िगरेशन था। गिट प्रलेखन राज्यों:

यदि आप विंडोज पर प्रोग्रामिंग कर रहे हैं और ऐसे लोगों के साथ काम कर रहे हैं जो (या इसके विपरीत) नहीं हैं, तो आप शायद किसी बिंदु पर लाइन-एंडिंग मुद्दों में भाग लेंगे

मैं मैक ओएस का उपयोग कर रहा हूं और मेरे पास मेरी एक परियोजना में वास्तव में यह मुद्दा है। इसे हल करने के लिए मैं कर दिया autocrlfकरने के लिए trueजो गलत था।

आप autocrlfइस तरह से अपने git कॉन्फ़िगरेशन की स्थिति देख सकते हैं :

git config core.autocrlf

इसलिए यदि यह रिटर्न trueऔर समस्या एक गिट रिपॉजिटरी के भीतर होती है, तो आपको उस कॉन्फ़िगरेशन को बदलना होगा

git config --global core.autocrlf input

एक मैक / यूनिक्स प्रणाली पर। विंडोज के लिए केवल परियोजनाएं जो आप उपयोग कर सकते हैं

git config --global core.autocrlf false

मेरे मामले में मैंने गिट रिपॉजिटरी को हटा दिया और इसे फिर से क्लोन किया और उसके बाद सब कुछ फिर से उम्मीद के मुताबिक काम किया।

Https://www.git-scm.com/book/en/v2/Customizing-Git-Git-Chffuration पर अधिक जानकारी प्राप्त करें


आपने मेरा दिन बचाया। मैं 2 दिनों के लिए इस लाइन के अंत मुद्दे से जूझ रहा था।
तहमीदुर रहमान

2

मेरे मामले में मेरे पास गलत गिट कॉन्फ़िगरेशन था। गिट प्रलेखन राज्यों:

यदि आप विंडोज पर प्रोग्रामिंग कर रहे हैं और ऐसे लोगों के साथ काम कर रहे हैं जो (या इसके विपरीत) नहीं हैं, तो आप शायद किसी बिंदु पर लाइन-एंडिंग मुद्दों में भाग लेंगे

मैं मैक ओएस का उपयोग कर रहा हूं और मेरे पास मेरी एक परियोजना में यह मुद्दा है। इसे हल करने के लिए मैंने ट्यून autocrlfकिया true

आप autocrlfइस तरह से अपने git कॉन्फ़िगरेशन की स्थिति देख सकते हैं :

git config core.autocrlf

इसलिए यदि यह रिटर्न trueऔर समस्या एक गिट रिपॉजिटरी के भीतर होती है, तो आपको उस कॉन्फ़िगरेशन को बदलना होगा

git config --global core.autocrlf input

जो मैक / यूनिक्स सिस्टम के लिए सही है। विंडोज के लिए केवल परियोजनाएं जो आप उपयोग कर सकते हैं

git config --global core.autocrlf false

मेरे मामले में मैंने गिट रिपॉजिटरी को हटा दिया और इसे फिर से जांचा और उसके बाद सब कुछ फिर से उम्मीद के मुताबिक काम किया।

Https://www.git-scm.com/book/en/v2/Customizing-Git-Git-Chffuration पर अधिक जानकारी प्राप्त करें


-1

इस लिंक ने मुझे इस मुद्दे को सुलझाने में मदद की। https://github.com/tiangolo/uwsgi-nginx-flask-docker/issues/127

मैंने अपनी .sh फ़ाइल को संपादित किया, सभी CRLF को LF के साथ बदल दिया


यह एक बहुत ही भयानक बात है। कृपया ऊपर दिए गए कई बेहतर समाधान देखें।
साल्वी शहजाद
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.