$ से 127 वापसी कोड?


जवाबों:


428

/bin/shजब आपके PATHसिस्टम वैरिएबल के भीतर दिए गए कमांड नहीं मिलते हैं और यह बिल्ट-इन शेल कमांड नहीं है, तो वैल्यू 127 वापस कर दिया जाता है । दूसरे शब्दों में, सिस्टम आपकी कमांड को नहीं समझता है, क्योंकि यह नहीं पता है कि आप जिस बाइनरी को कॉल करने की कोशिश कर रहे हैं उसे कहां से मिलेगा।


55
यह तब भी होता है जब एक बैश स्क्रिप्ट में "+ x" मोड नहीं होता है, लेकिन वास्तव में मौजूद होता है।
मैथ्यूकेमर

3
आप यह which [program]देखने की कोशिश कर सकते हैं कि ओएस किस बाइनरी का उपयोग कर रहा है। यदि यह खाली हो जाता है, तो अगला कदम निष्पादन बिट और पैट की जांच कर रहा है।
चार ४३

10
@ cr125rider, whichविशेष रूप से सटीक नहीं है - यह उपनाम, शेल फ़ंक्शंस, PATH लुकअप मेमोएज़ेशन, या शेल को आंतरिक अन्य कारकों के बारे में नहीं जानता है। उपयोग करने के लिए बेहतर है type, एक शेल बिलिन जो उन सभी चीजों के बारे में जानता है।
चार्ल्स डफी

5
यह मेरे साथ एक फाइल के साथ भी हुआ जिसमें विंडोज लाइन फीड था। यूनिक्स प्रारूप में लाइन एंडिंग को सही करने से समस्या हल हो गई
मितकिन्स

4
@MatthewKremer: वास्तव में, मुझे मिलता है 126( Permission denied), न कि 127जब मैं एक गैर-निष्पादन योग्य फ़ाइल (इसकी सामग्री के बावजूद) को लागू करने का प्रयास करता हूं; इसी तरह, निर्देशिका को निष्पादित करने का प्रयास भी परिणाम 126( is a directory) में होता है।
mklement0

58

आम तौर पर इसका मतलब है:

127 - आदेश नहीं मिला

लेकिन इसका मतलब यह भी हो सकता है कि कमांड मिल गया है ,
लेकिन कमांड द्वारा आवश्यक पुस्तकालय नहीं मिला है


14

127 - command not found

उदाहरण: $ caat त्रुटि संदेश होगा

दे घुमा के:

caat: कमांड नहीं मिली

अब आप का उपयोग कर की जाँच करें echo $?


10

शेल कन्वेंशन यह है कि एक सफल निष्पादन योग्य मूल्य के साथ बाहर निकलना चाहिए। 0. किसी भी चीज को किसी प्रकार की विफलता के रूप में व्याख्या किया जा सकता है, बैश के हिस्से पर या निष्पादन योग्य जिसे आप बस चलाते हैं। बश मैन पेज पर $ PIPESTATUS और EXIT STATUS अनुभाग भी देखें :

   For  the shell’s purposes, a command which exits with a zero exit status has succeeded.  An exit status
   of zero indicates success.  A non-zero exit status indicates failure.  When a command terminates  on  a
   fatal signal N, bash uses the value of 128+N as the exit status.
   If  a command is not found, the child process created to execute it returns a status of 127.  If a com-
   mand is found but is not executable, the return status is 126.

   If a command fails because of an error during expansion or redirection, the exit status is greater than
   zero.

   Shell  builtin  commands  return  a  status of 0 (true) if successful, and non-zero (false) if an error
   occurs while they execute.  All builtins return an exit status of 2 to indicate incorrect usage.

   Bash itself returns the exit status of the last command executed, unless  a  syntax  error  occurs,  in
   which case it exits with a non-zero value.  See also the exit builtin command below.

8

इसका कोई विशेष अर्थ नहीं है, इसके अलावा बाहर निकलने की अंतिम प्रक्रिया ने 127 की निकास स्थिति के साथ ऐसा किया।

हालाँकि, इसका उपयोग bash द्वारा किया जाता है (यह मानते हुए कि आप bash का उपयोग शेल के रूप में कर रहे हैं) आपको यह बताने के लिए कि जिस कमांड को आपने निष्पादित करने की कोशिश की थी, उसे निष्पादित नहीं किया जा सकता है (यानी यह नहीं मिल सकता है)। यह दुर्भाग्य से तुरंत समर्पण नहीं है, अगर प्रक्रिया 127 की स्थिति से बाहर निकलती है, या यदि यह नहीं मिला।

संपादित करें:
कंसोल पर आउटपुट को छोड़कर तुरंत समर्पण नहीं है, लेकिन यह स्टैक ओवरफ्लो है, इसलिए मुझे लगता है कि आप यह एक स्क्रिप्ट में कर रहे हैं।


2

यह त्रुटि कई बार धोखा देने वाली भी होती है। यह कहता है कि फ़ाइल वास्तव में मौजूद होने के बावजूद फ़ाइल नहीं मिली है। यह उन अमान्य अपठनीय विशेष वर्णों के कारण हो सकता है जो फाइलों में मौजूद हैं जो आपके द्वारा उपयोग किए जा रहे संपादक के कारण हो सकते हैं। यह लिंक ऐसे मामलों में आपकी मदद कर सकता है।

-बेश: ./my_script: / bin / bash ^ M: bad दुभाषिया: ऐसी कोई फ़ाइल या निर्देशिका नहीं

यह पता लगाने का सबसे अच्छा तरीका है कि क्या यह समस्या है, पूरी फाइल में एक गूंज स्टेटमेंट को सरल जगह पर रखना है और यह सत्यापित करना है कि क्या एक ही त्रुटि है।


1

यदि आप स्क्रिप्टिंग भाषा का उपयोग करके कोई प्रोग्राम चलाने का प्रयास कर रहे हैं, तो आपको स्क्रिप्टिंग भाषा का पूरा पथ और निष्पादित करने के लिए फ़ाइल शामिल करना पड़ सकता है । उदाहरण के लिए:

exec('/usr/local/bin/node /usr/local/lib/node_modules/uglifycss/uglifycss in.css > out.css');

धन्यवाद, यह मेरे लिए काम किया। इसलिए मैंने कौन सा gs किया और फिर अपनी स्क्रिप्ट में आउटपुट पथ का उपयोग किया। काम किया ..
जुआन

0

अगर आईबीएम मेनफ्रेम जेसीएल में यूनिक्स स्क्रिप्ट के नाम के अंत में कुछ अतिरिक्त वर्ण या संख्याएं हैं तो इसे ऐसी त्रुटि कहा जा सकता है।

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