Tôi có đoạn script sau:
#!/bin/bash
set -x
if :; then
echo a
fi
Nếu tôi chạy bash /tmp/file, ađược lặp lại, nhưng nếu tôi chạy source /tmp/file, tôi nhận được:
bash: /tmp/test: line 6: syntax error: unexpected end of file
Đầu ra:
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
Đầu ra của các lệnh shopt -pvà set -o: http://pastebin.com/bsqc8aru
Đầu ra của set: http://pastebin.com/S9KpqZAL
declare -fp sản xuất không có gì.
Tôi nghĩ rằng sourcenó cũng giống như vậy bash, nhưng thay vì bắt đầu phiên mới thay vì chạy mã trong phiên hiện tại. Bất cứ ai có thể giải thích lỗi này cho tôi?
Tôi chạy bash GNU bash, phiên bản 4.2.53 (1) -release (x86_64-redhat-linux-gnu).
$BASH_ENVbộ?
bash -ccâu hỏi của bạn. Sau đó, cho chúng tôi xem nội dung của ~/.bashrctập tin của bạn , có thể có thứ gì đó đang làm hỏng mọi thứ.