2012-05-28 15 views
25

में काम नहीं कर रहा है मेरे पास दो स्क्रिप्ट हैं 1.sh और 2.sh.निर्यात मेरी शेल स्क्रिप्ट

#!/bin/sh 
echo $variable 

मैं क्या पढ़ा के अनुसार, इस (निर्यात) की तरह कर रही है चर एक में पहुंच सकता है:

#!/bin/sh 
variable="thisisit" 
export variable 

2.sh इस प्रकार है:

1.sh इस प्रकार है दूसरे से खोल स्क्रिप्ट। लेकिन यह मेरी लिपियों में काम नहीं कर रहा है। क्या कोई मदद कर सकता है। अग्रिम में धन्यवाद।

+0

और आप इन शैल स्क्रिप्ट को कैसे निष्पादित कर रहे हैं? – linuxeasy

+0

यह भी देखें: http://superuser.com/questions/176783/what-is-the-difference-between-executing-a-bash-script-and-sourcing-a-bash-scrip#176788 और http: // unix.stackexchange.com/questions/3507/difference-between-environment-variables-and-exported-environment-variables-in-b – lesmana

+0

मैं पहले टर्मिनल में 1.sh चलाता हूं, फिर 2. टर्मिनल में 2.sh चलाता हूं। .. – Xander

उत्तर

5

export निष्पादन शैल के पर्यावरण में एक चर डालता है, इसलिए यह स्क्रिप्ट द्वारा निष्पादित प्रक्रियाओं को पारित किया जाता है, लेकिन स्क्रिप्ट या किसी अन्य प्रक्रिया को कॉल करने की प्रक्रिया के लिए नहीं।

#!/bin/sh 
FOO=bar 
env | grep '^FOO=' 

और

#!/bin/sh 
FOO=bar 
export FOO 
env | grep '^FOO=' 

को क्रियान्वित करने export के प्रभाव को देखने के लिए प्रयास करें।

1.sh से 2.sh चर पाने के लिए, या तो 1.sh से 2.sh कॉल करें, या आयात 1.sh2.sh में:

#!/bin/sh 
. ./1.sh 
echo $variable 
59

आप sh 1.sh या ./1.sh तब की तरह अपनी फ़ाइलें क्रियान्वित रहे हैं, तो आप एक उप में यह क्रियान्वित कर रहे हैं -shell।

आप परिवर्तन आपके वर्तमान खोल में किए जाने के लिए चाहते हैं, आप कर सकता है:

. 1.sh 
# OR 
source 1.sh 

reference-documentation से गुजर रही पर विचार करें।

"एक स्क्रिप्ट का उपयोग कर चलाया जाता है source [या .] इसे चलाता मौजूदा खोल के भीतर, बनाया या स्क्रिप्ट द्वारा संशोधित किसी भी चर उपलब्ध स्क्रिप्ट पूर्ण होने के बाद ही रहेगा। इसके विपरीत अगर स्क्रिप्ट filename के रूप में सिर्फ चलाया जाता है , फिर एक अलग सबहेल (चर के पूरी तरह से अलग सेट के साथ) स्क्रिप्ट चलाने के लिए तैयार किया जाएगा। "

+0

ओपी '/ bin/sh' का उपयोग कर रहा है, जो कई प्लेटफॉर्म पर एक न्यूनतम POSIX खोल है और' स्रोत' कमांड का समर्थन नहीं करेगा। –

+0

हम्म .. मैंने ''' और' space' के बारे में उल्लेख किया है। मैंने 'स्रोत' का उल्लेख किया है क्योंकि मैं आजकल लोगों का उपयोग करता हूं। – linuxeasy

+0

1.sh: 3: स्रोत: नहीं मिला :( मैं नहीं चाहता कि मेरा 1.sh 2.sh से निष्पादित किया जाए, मैं इसे बंद करने के बाद 1.sh पहले दौड़ना चाहता हूं 2.sh .. और .. पहले से दूसरे में चर का उपयोग करें .... उत्तर के लिए धन्यवाद – Xander

संबंधित मुद्दे