다음 스크립트가 있습니다.
#!/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 bash, 버전 4.2.53 (1)-릴리스 (x86_64-redhat-linux-gnu)를 실행합니다.
1
아니요, 이것은 전체 코드입니다. 줄 바꿈은 0a입니다.
—
knezi
@Rahul 유닉스 줄 바꿈 문자의 16 진수 코드
—
PSkocik
는 IS
—
roaima
$BASH_ENV
세트는?
@PSkocik 정말 이상합니다. bash -c "source / tmp / test"가 작동합니다.
—
knezi 2016 년
아하!
—
terdon
bash -c
귀하의 질문에 적용되도록 추가 하십시오. 그런 다음 ~/.bashrc
파일 의 내용을 보여주십시오. 아마도 문제가 될 수 있습니다.