मेरे पास निम्न स्क्रिप्ट है:
#!/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
फ़ाइल की सामग्री दिखाएं , वहाँ शायद कुछ है जो चीजों को खराब कर रहा है।