मेरे पास निम्न स्क्रिप्ट है:
#!/bin/bash
set -x
if :; then
echo a
fi
अगर मैं दौड़ता हूं bash /tmp/file, तो aयह गूँजता है, लेकिन अगर मैं दौड़ता source /tmp/fileहूं, तो मुझे मिलता है:
bash: /tmp/test: line 6: syntax error: unexpected end of file
उत्पादन:
knezi@holly tmp]$set -x; source /tmp/test; set +x
+ source /tmp/test
++ set -x
bash: /tmp/test: line 6: syntax error: unexpected end of file
+ set +x
knezi@holly tmp]$set -x; command source /tmp/test; set +x
+ set -x
+ command source /tmp/test
+ source /tmp/test
++ set -x
bash: /tmp/test: line 6: syntax error: unexpected end of file
+ set +x
knezi@holly tmp]$bash -c "source /tmp/test"
+ bash -c 'source /tmp/test'
++ :
++ echo a
a
knezi@holly tmp]$od -c /tmp/test
0000000 # ! / b i n / b a s h \n s e t
0000020 - x \n i f : ; t h e n \n \t e
0000040 c h o a \n f i \n
0000051
कमांड का आउटपुट shopt -pऔर set -o: http://pastebin.com/bsqc8aru
आउटपुट set: http://pastebin.com/S9KpqZAL
declare -fp कुछ नहीं पैदा करता है।
मैंने सोचा था कि sourceऐसा ही होता है bash, लेकिन नए सत्र को शुरू करने के बजाय वर्तमान में कोड चलाता है। क्या कोई मुझे इस त्रुटि की व्याख्या कर सकता है?
मैं bash GNU बैश, संस्करण 4.2.53 (1) -release (x86_64-redhat-linux-gnu) चलाता हूं।
$BASH_ENVसेट?
bash -cआपके प्रश्न के साथ काम करता है । फिर, हमें अपनी ~/.bashrcफ़ाइल की सामग्री दिखाएं , वहाँ शायद कुछ है जो चीजों को खराब कर रहा है।