स्रोत आदेश शेल में नहीं मिला


146

मेरे पास एक स्क्रिप्ट है जो shशेल का उपयोग करती है। मुझे sourceकमांड का उपयोग करने वाली लाइन में एक त्रुटि मिलती है । ऐसा लगता sourceहै कि यह मेरे shशेल में शामिल नहीं है ।

अगर मैं स्पष्ट रूप sourceसे शेल से चलने की कोशिश करता हूं तो मुझे मिलता है:

sh: 1: source: not found

क्या मुझे किसी तरह "स्रोत" स्थापित करना चाहिए? क्या मेरे पास गलत संस्करण है sh?


1
कोई भी तर्क कर सकता है कि एक शेल जो source"गलत संस्करण" का समर्थन करता है।
विलियम पर्ससेल

1
साथ ही, त्रुटि संदेश का source: not foundअर्थ है कि sourceकमांड का मूल्यांकन ठीक से किया गया था, लेकिन जिस फ़ाइल को पढ़ना चाहिए था वह मौजूद नहीं है।
साइमन रिक्टर

4
यह "इंस्टॉल" करना संभव नहीं है source क्योंकि यह शेल की एक विशेषता है। इसे बाहरी आदेश के रूप में लागू नहीं किया जा सकता है।
क्रिस्टोफर शुल्त्स

जवाबों:


151

/bin/shआमतौर पर कुछ अन्य शेल खोल की नकल करने की कोशिश कर रहा है। कई वितरण उपयोग /bin/bashकरते हैं sh, यह समर्थन करता है source। हालांकि, उबंटू /bin/dashका उपयोग किया जाता है जो समर्थन नहीं करता है source। ज्यादातर गोले के .बजाय का उपयोग करें source। यदि आप स्क्रिप्ट को संपादित नहीं कर सकते, तो इसे चलाने वाले शेल को बदलने का प्रयास करें।


2
धन्यवाद! उबंटू पर काम करने के साथ / बिन / शश की जगह / बिन / श की जगह! मैं उत्सुक हूं कि हालांकि, इसका मतलब उबंटू बैश श पर है?
मिलाद

1
@ मीलाद: हाल ही में यूबंटस, /bin/shकॉल /bin/dash। परंपरागत रूप से /bin/shकहा जाता /bin/bashहै, श-संगतता मोड है।
कोरोबा

@ मीलाद मुझे लगता है कि यह ubuntu 14.04 पर काम नहीं करता है। आपका OS संस्करण क्या है?
रेजा आमेरी

1
शायद ज्ञात मदद - यदि आपके पास कैस्केड स्क्रिप्ट है तो सभी "श -> बैश" का नाम बदलें। धन्यवाद। :-)
बीजी ब्रूनो

यह तुरंत मेरे लिए सहज नहीं था कि इस समस्या को कैसे ठीक किया जाए लेकिन इसने मुझे सही रास्ते पर ला खड़ा किया। मुझे SHELL := /bin/bashअपने मेकफाइल के शीर्ष पर जोड़ना था ।
Anon58192932

136

बॉर्न शेल (श) में, का उपयोग करें। एक फ़ाइल स्रोत के लिए आदेश

. filename

मुझे स्क्रिप्ट को बदलने की अनुमति नहीं है, यह रेडहैट सर्वर पर ठीक चलता है। लेकिन उस सर्वर पर, स्रोत sh
मिलाद

2
यदि यह है sourceतो सख्ती नहीं है sh
त्रिकालिका

4
मुझे जेनकिन्स पर इस प्रकार की समस्या थी ("गुप्त फ़ाइल" के रूप में संग्रहीत फ़ाइल को स्रोत करने की कोशिश) और "द्वारा सोर्सिंग।" कमांड हल था।
Jan Vlcinsky

यह शीर्ष उत्तर होना चाहिए क्योंकि यह श, डैश और बैश के साथ काम करेगा।
अखन

3
मैक ओएस (देव वातावरण) और ट्रैविस-सीआई (परीक्षण पर्यावरण) के साथ संगतता के लिए, मुझे उपयोग करना पड़ा . ./filename। अन्यथा, मुझे sh: 1: .: filename: not foundट्रैविस-सीआई पर परीक्षण चलाते समय एक त्रुटि मिलेगी ।
एड्रिन जोली

48
$ls -l `which sh`
/bin/sh -> dash

$sudo dpkg-reconfigure dash #Select "no" when you're asked
[...]

$ls -l `which sh`
/bin/sh -> bash

तब ठीक होगा


अच्छा! मैं आरएचईएल और उबंटू सर्वर चला रहा हूं और मेरे पास हमेशा छोटे मुद्दे हैं जैसे उबंटू के साथ। मैं वास्तव में लिनोल की तरह आरएचईएल और आरएचईएल को पसंद करता हूं।
राडटेक

स्वीकृत उत्तर उबंटू 14 पर काम नहीं करता है, यह एक करता है!
रोहिथ्रप

कृपया अपने उत्तर में कुछ और स्पष्टीकरण जोड़ें - यह क्या करता है? dpkg-reconfigureसभी उपयोगकर्ताओं के लिए सुलभ नहीं हो सकता है, विशेषकर ऐसे सिस्टम पर जो डेबियन पर आधारित नहीं हैं
निको हासे

source: not foundडेबियन अपग्रेड के बाद पुराने टेलनेट ग्राहकों के साथ मेरी त्रुटियों को ठीक किया, धन्यवाद।
ब्योस्टर


9

यह समस्या इसलिए होती है क्योंकि jenkins Execute Shell स्क्रिप्ट को इसके / bin / sh के माध्यम से चलाता है

नतीजतन, / बिन / श को "स्रोत" नहीं पता

आपको बस जेनकींस में अपने एक्सक्यूट शैल के नीचे की रेखा को जोड़ने की आवश्यकता है

#!/bin/bash

दिए गए प्रश्न जेनकिन्स से संबंधित नहीं है
निको हसे

8

sourceआदेश कुछ गोले में बनाया गया है। यदि आपके पास एक स्क्रिप्ट है, तो यह निर्दिष्ट करना चाहिए कि पहली पंक्ति पर किस शेल का उपयोग करना है, जैसे:

#!/bin/bash

खैर, यह कहता है #! / बिन / श और एक और लिनक्स पर अगर मैं मैन्युअल रूप से श में प्रवेश करता हूं और पूछता हूं "कौन सा स्रोत" यह मुझे बताता है: स्रोत: शेल निर्मित कमांड
मिलाद

ओह, तो यह वही है जो इस लाइन के लिए था। मुझे हमेशा आश्चर्य होता था। बहुत धन्यवाद!
कॉमनडिस्कॉनकोड

5

मुझे इस त्रुटि का सामना करना पड़ा, जब मैं # जेनकींस निष्पादित शेल से स्रोत कमांड को कॉल करने की कोशिश कर रहा था ।

source profile.txt या source profile.properties

स्रोत कमांड के लिए प्रतिस्थापन का उपयोग करना है,

. ./profile.txt या . ./profile.properties

नोट: दो बिंदुओं के बीच एक स्थान है (।)


0

मुझे उबंटू के एक गन्न मेकफाइल में मिला, (जहां / बिन / श -> बाश)

मैं का उपयोग करने की जरूरत है। कमांड, और साथ ही ./ उपसर्ग के साथ लक्ष्य स्क्रिप्ट निर्दिष्ट करें (नीचे उदाहरण देखें)

स्रोत ने इस उदाहरण में काम नहीं किया है, निश्चित नहीं है कि चूंकि इसे कॉलिंग / बिन / बैश होना चाहिए ..

मेरा शेल पर्यावरण चर / बिन / बैश में भी सेट है

test:
    $(shell . ./my_script)

ध्यान दें कि इस नमूने में टैब वर्ण शामिल नहीं है; स्टैक एक्सचेंज के लिए प्रारूपण करना था।


0

source एक bash बिल्ट-इन कमांड होता है इसलिए source कमांड को निष्पादित करने के लिए, आप रूट के रूप में लॉग इन कर सकते हैं।

sudo -s source ./filename.sh


यह एक वैध समाधान की तरह नहीं दिखता है। क्या होगा यदि उपयोगकर्ता के पास sudo अनुमतियाँ नहीं हैं? और sourced सामान बाद में व्यवस्थापक उपयोगकर्ता है, जो नए मुसीबत का कारण होगा के रूप में ही उपलब्ध है
निको हासे

0

Ubuntu पर, फ़ाइल चलाने के लिए sh scriptname.sh का उपयोग करने के बजाय, मैंने उपयोग किया है। scriptname.sh और यह काम किया! मेरी फ़ाइल की पहली पंक्ति में है: #!/bin/bash

स्क्रिप्ट को चलाने के लिए इस कमांड का उपयोग करें

.name_of_script.sh

1
यह पहले ही कई बार उत्तर दिया जा चुका है। कृपया अधिक जानकारी प्रदान करें यदि आप इस तरह के मामले में एक नया उत्तर जोड़ते हैं
निको हासे

-3

यह आपकी मदद कर सकता है, मुझे यह त्रुटि मिल रही थी क्योंकि मैं अपने .profileआदेश को फिर से लोड करने की कोशिश कर रहा था . .profileऔर इसमें एक सिंटैक्स त्रुटि थी


-6

बॉर्न शेल (एसएच) का पता लगाने के लिए पैट का उपयोग करता है source <file>। यदि आप जिस फ़ाइल को स्रोत करने का प्रयास कर रहे हैं वह आपके पथ में नहीं है, तो आपको त्रुटि 'फ़ाइल नहीं मिली' मिल जाती है।

प्रयत्न:

source ./<filename>

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