शेल स्क्रिप्ट चलाते समय "कमांड नहीं मिली"। मैंने क्या तोड़ दिया?


8

मैं OSX स्नो लेपर्ड पर हूं।

यहाँ की पूरी सामग्री है grr.sh:

#!/bin/sh

echo wow

जब मैं इसे टर्मिनल से चलाने का प्रयास करता हूं:

$ grr.sh
-bash: grr.sh: command not found
$ /bin/sh grr.sh
wow
$ sh grr.sh
wow
$ bash grr.sh
wow

ठीक है। काफी उचित। मैं इसे निष्पादन योग्य अनुमति दूंगा, फिर प्रयास करें:

$ chmod +x grr.sh
$ grr.sh
-bash: grr.sh: command not found
$ chmod 755 grr.sh
$ grr.sh
-bash: grr.sh: command not found

हममम। शायद यह काम करेगा अगर मैं स्पष्ट रूप से बैश का उपयोग करूं? मैं फ़ाइल की सामग्री बदलूंगा:

#!/bin/bash

echo wow

और मुझे सटीक समान परिणाम मिलते हैं। मैं क्या तोड़ सकता है ?!

एक अंतिम बात! मामले में आप उत्सुक हैं ...

$ which sh
/bin/sh

जवाबों:


19

बिल्कुल कुछ नहीं। केवल एक निर्देशिका में निष्पादन योग्य को $PATHसीधे चलाया जा सकता है, और .(आमतौर पर) कभी नहीं होता है $PATH। निष्पादन योग्य के लिए पथ निर्दिष्ट करें, अर्थात ./grr.sh


3
+1। भी ध्यान रखने की, वर्तमान निर्देशिका है डिफ़ॉल्ट रूप से विंडोज सिस्टम पर रास्ते पर है, और प्राथमिकता में सबसे अधिक है। यह महत्वपूर्ण अंतर शायद प्रश्नकर्ता के भ्रम का स्रोत है।
अफरजियर

आप 9 सेकंड पहले थे! धन्यवाद!
बंद चरवाहा

आप मेरी मैकबुक बचाओ
vietnguyen09

8

$PATHचर में grr.sh का स्थान है ? यदि नहीं, तो आपको दर्ज करना होगा:

./grr.sh

यदि आप grr.sh के समान फ़ोल्डर में हैं यदि नहीं, तो उसे पूरा मार्ग प्रदान करें।


7

फ़ाइल के लिए अनुमतियाँ गलत हैं। निम्नलिखित आदेश आज़माएँ:

  $ chmod 777 file.sh
  $ ./file.sh

0

हाँ, और क्या है ।/grr.sh का अर्थ है, इस निर्देशिका में, कमांड grr.sh चलाएं। अकेला । कार्यशील निर्देशिका में इसका मतलब है। अन्यथा, आपका शेल मानता है कि आप अपने $ पेट में एक कमांड चलाने की कोशिश कर रहे हैं।

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