बदलने के बाद "कमांड नहीं मिला"।


46

मैं अपना .bash_profile अपडेट कर रहा था, और दुर्भाग्य से मैंने कुछ अपडेट किए और अब मुझे मिल रहा है:

env: bash: No such file or directory
env: bash: No such file or directory
env: bash: No such file or directory
env: bash: No such file or directory
env: bash: No such file or directory
-bash: tar: command not found
-bash: grep: command not found
-bash: cat: command not found
-bash: find: command not found
-bash: dirname: command not found
-bash: /preexec.sh.lib: No such file or directory
-bash: preexec_install: command not found
-bash: sed: command not found
-bash: git: command not found

मेरी bash_profile वास्तव में अन्य .sh फ़ाइलों (उन्हें स्रोतों) में खींचती है, इसलिए मुझे बिल्कुल यकीन नहीं है कि किस संशोधन के कारण ऐसा हो सकता है।

अब अगर मैं भी कोशिश करूँ और फ़ाइलों की सूची के लिए, मुझे मिल गया:

>ls
-bash: ls: command not found
-bash: sed: command not found
-bash: git: command not found

त्रुटि के स्रोत का पता लगाने के लिए कोई भी सुझाव, और मूलभूत चीज़ों जैसे कि फाइलों को सूचीबद्ध करने आदि के लिए टर्मिनल का उपयोग करने में कैसे सक्षम हो?


यदि आप पूर्ण पथ का उपयोग करते हैं तो ऐसा क्या होता है: / बिन / एलएस? और आप किस तरह के बदलाव कर रहे थे?
केपी मैकग्रेगर

2
हां, अपना .bash_profile
जनवरी

/ बिन / एलएस फाइलों को सूचीबद्ध करता है, लेकिन फिर मैं नीचे इन 2 लाइनों को देखता हूं:-bash: sed: command not found -bash: git: command not found
ब्लैंकेमैन

यदि आपकी समस्या थी /etc/environment, तो निम्न कमांड का उपयोग करें ( ssh -t root@<server-ip> "/bin/bash -c '/bin/mv /etc/environment /tmp/'"
सेंटोस

जवाबों:


65

यह मुझे लगता है कि एक बिंदु या किसी अन्य पर आप डिफ़ॉल्ट PATHपर्यावरण चर को अधिलेखित कर रहे हैं । आपके पास त्रुटियों का प्रकार, इंगित करता है कि PATHइसमें शामिल नहीं है /bin, जहां उपरोक्त कमांड (सहित bash) रहते हैं।

उदाहरण के लिए, यदि आप करते हैं

PATH=/home/user/bin

के बजाय

PATH="$PATH":/home/user/bin

मैंने एक बिंदु पर ऐसा किया:export PATH=PATH:EC2_HOME/bin
ब्लेंकमैन

2
आपको दूसरी पाथ स्ट्रिंग में '$' का उपयोग करना है - export PATH=$PATH:EC2_HOME/bin
मनुला वैद्यनाथ

अजीब है कि 'ec2-description-region' कैसे काम नहीं करता है, भले ही यह मेरे रास्ते में है, फिर भी यह काम करता है: $ EC2_HOME / bin / ec2-वर्णन-क्षेत्रों मैंने एक स्रोत पुनः लोड भी किया ....
Blankman

2
देखिए, हम नहीं जानते कि आप क्या कर रहे हैं, आप कौन सी अन्य फाइलें सोर्स कर रहे हैं, उनमें क्या है। और हां, हर बार जब आप फ़ाइल को स्रोत करते हैं, तो आप चीजों को अपने पथ पर जोड़ते हैं (जो ठीक है, क्योंकि सामान्य रूप से .bash_profile केवल एक बार पढ़ा जाएगा)। इसके माध्यम से एक-एक करके देखें और देखें कि क्या होता है। इसके अलावा, EC2_HOME एक चर नहीं है? यदि हाँ, तो आपको इसे $इस तरह से पूर्व करना चाहिए :export PATH=$PATH:$EC2_HOME/bin
जनवरी

1
मैं यह गिनता हूं कि मैं कितनी बार उस समस्या में फंसा और इस उत्तर ने मुझे कितनी बार मदद की
Herrgott

21

अपनी बैश स्क्रिप्ट को डीबग करना शुरू करने का एक तरीका -x विकल्प के साथ एक सब-आरंभ करना होगा:

$ bash --login -x

यह आपको प्रत्येक कमांड और उसके तर्क दिखाएगा, जो उस शेल को शुरू करने पर निष्पादित होता है।

--Login विकल्प निर्दिष्ट है क्योंकि .bash_profile लॉगिन गोले द्वारा पढ़ा जाता है। बैश स्क्रिप्ट पर डिबगिंग के बारे में अधिक जानकारी यहां पाई जा सकती है: http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_02_03.html

अंततः, मुझे लगता है कि जनवरी का सुझाव आपके लिए काम करेगा, लेकिन यह लिंक भविष्य की समस्याओं के लिए एक पढ़ने लायक है।


यह मिल गया: -बेश: बैश: कमांड नहीं मिला
यासीन कुरैशी

10

मुझे समस्या मिल सकती है। इसने मेरे लिए काम किया, और यह आपके लिए काम कर सकता है ...

मैं अपने संपादक के साथ विंडोज (LF / CR) को सहेजने में चूक कर रहा था। चूंकि मैं दोनों प्रणालियों का उपयोग करता हूं, इसलिए यह तर्कसंगत लग रहा था। जब मुझे अपने साथ खिलवाड़ करने की जरूरत पड़ी .bash_profile, तो मुझे पता चला कि कुछ भी काम नहीं किया। मैंने अपने सेव को OS X फॉर्मेट (केवल CR) और Voilà में बदल दिया! टर्मिनल में कोई और "कमांड नहीं मिला"!

यह सिर्फ इतना आसान हो सकता है!


बहुत सूक्ष्म बात जो मुझे पागल कर रही थी। इस उत्तर को जोड़ने के लिए धन्यवाद!
samuel.molinski

यह मैं अनुभव कर रहा था! धन्यवाद। क्विक टिप इस कमांड का उपयोग आपके यूनिक्स वातावरण पर फ़ाइलों को परिवर्तित करने के लिए कर रहा है:$ dos2unix .bash_profile
melwil

क्या आप निश्चित हैं कि आपने क्या किया? चूँकि OS X Unix है, यह Unix- स्टाइल लाइन एंडिंग्स का उपयोग सिंगल लाइनफीड (LF) कैरेक्टर के साथ करता है, न कि कैरिज रिटर्न (CR)। केवल लोकप्रिय ऑपरेटिंग सिस्टम जो बाद में उपयोग किया गया था, ओएस 9 और पूर्व और लिनक्स / उबंटू एप्लिकेशन इसके द्वारा काफी भ्रमित होंगे।
डेविड फ़ॉर्स्टर

6

के बाद मैं फिर से नहीं चला सका। ~ / .bash_profile या whoami, grep, आदि जैसे किसी भी सामान्य आदेशों में मुझे आवश्यक पथों को फिर से निर्यात करने का एक तरीका मिला है:

export PATH=/usr/local/jdk/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/cpanel/composer/bin:/usr/local/easy/bin:/usr/local/bin:/usr/X11R6/bin:/root/bin

यह अधिकांश प्रणालियों में काम करना चाहिए, हालांकि इनमें से कुछ पथ सभी लिनक्स संकुल में मौजूद नहीं हैं। इसने मेरे लिए काम किया।


4

मुझे लगता है कि मुझे इस समस्या का जवाब मिल सकता है यदि आप के लिए नहीं तो दूसरों के लिए भी जिनके पास समान समस्या है। इस पर मेरा जवाब है कि मेरे पास नहीं है .bash_profile

इसलिए मैं पूरे वेब पर खोज कर रहा था और मुझे इसका हल मिल गया। जो मूल रूप से टर्मिनल, प्रकार touch ~/.bash_profileऔर प्रेस को खोलने के लिए है Enter। इससे मेरी परेशानी ठीक हो गई। आशा है कि यह आपके लिए भी ऐसा ही करे


8
LOL ... -बश: स्पर्श: कमांड नहीं मिला
कुमार केएल

2

मुझे भी आप जैसी ही समस्या है। जब मैं रूट में लॉग इन करता हूं तो मैं कई लोकप्रिय कमांड ( ls, vi/vim..,) का उपयोग नहीं कर सकता और न ही संपादित कर सकता /root/.bashrcहूं su

आखिरकार। मुझे इस समस्या का हल मिल गया। कमांड के साथ बस रूट लॉगिन करें:

su -m

उसके बाद, आप उपयोग कर सकते हैं

vim /root/.bashrc

पथ संपादित करने के लिए।

सौभाग्य!


2

मुझे भी यही समस्या थी। आपने PATH को निर्यात करते समय एक $ छूट दी होगी। आपको TextEdit में .bash_profile खोलना चाहिए। यदि आपको निर्देशिका में फ़ाइल नहीं मिली है, तो छुपी हुई फ़ाइलें दिखाने के लिए Command + Shift +> दबाएँ।

फिर PATH में सुधार करें और फिर सहेजें।

टर्मिनल पर निर्देशिका में, प्रकार: source .bash_profile।

इस मुद्दे को हल करना चाहिए।


धन्यवाद इससे मेरी समस्या हल हो गई, आखिरकार मैं अपनी bash_profile फ़ाइल को संपादित करने में सक्षम हुआ।
टुसेफ मुर्तजा

1

मेरे साथ भी ठीक यही समस्या आई:

अगर मैं lxterminal में डालूं:

set | grep "jerom/bash"
PATH=/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/jerom/bash/

अगर मुझे tty2 में ठीक वैसी ही कमांड मिलती है जो मुझे मिली है:

set | grep "jerom/bash"
PATH=/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/jerom/bash\r

\ r का अर्थ है लाइन का DOS अंत, इसलिए मैंने फ़ाइल खोली ~/.bashrcऔर क्रूसेडर में लाइनों के सिरों को यूनिक्स शैली में बदल दिया। और इसका काम पहले से ही !!! :-)

डॉस ईओएल स्पैशस समस्याओं को भी बैश स्क्रिप्ट में बनाते हैं।


1

मेरे बदलने के बाद अब मुझे वही समस्या हुई .bash_profile। और मैं इसे वापस बदलना चाहता हूं, लेकिन अब मैं नहीं कर सकता, क्योंकि मैंने सभी कमांड, विशेष रूप से नैनो कमांड और विम कमांड खो दिया है, इसलिए मैं कमांड के साथ .bash_profile नहीं खोल सकता। और .bash_profileएक छुपी हुई फाइल है जिसे मैं फाइंडर के साथ नहीं खोल सकता।

इसलिए मुझे .bash_profile फ़ाइल खोलने का एक तरीका खोजने की आवश्यकता है। मैंने कई तरीकों की कोशिश करने के बाद पाया कि मैं एटम का उपयोग कर सकता हूं , क्योंकि एटम एक प्रोजेक्ट फ़ोल्डर में सभी फाइलों को पढ़ सकता है, जिसमें छिपी हुई फाइलें शामिल हैं। तो बस एटम खोलें, और चुनें File -> Open, <yourusername>फ़ोल्डर चुनें , और फिर, सभी छिपी हुई फाइलें एटम के पेड़ के दृश्य पर दिखाई दे रही हैं, शामिल करें .bash_profile!! मैंने अंतिम संशोधन को हटा दिया और टर्मिनल को फिर से खोलने के बाद, सभी कमांड वापस आ गए! :)

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