이 명령은 스크립트(또는 -c) 내에서 작동하지만 직접 실행할 때는(대화형 셸에서) 작동하지 않습니다.

이 명령은 스크립트(또는 -c) 내에서 작동하지만 직접 실행할 때는(대화형 셸에서) 작동하지 않습니다.

이것은 작동합니다:

$ bash -c 'while true; do echo foo; sleep 1; done'
foo
foo
...

하지만 이건 아니다:

$ while true; do echo foo; sleep 1; done
bash: syntax error near unexpected token `done'

zsh에서도 동일한 문제가 발생합니다.

zsh: '완료' 근처에서 구문 분석 오류가 발생했습니다.

참고: 대시는 유효합니다.

답변1

이와 같은 문제는 aliases비대화형 쉘에서 비활성화되어 있다는 사실을 아는 사람이 거의 없기 때문에 종종 오해됩니다.

do귀하의 경우에는 문제를 일으키는 것은 name이라는 별칭입니다 .

비슷한 문제를 조사하려면 일반적으로 다음 명령을 사용하여 새 셸을 시작할 수 있습니다.

HOME=/tmp $shell

그런 다음 다시 시도해 보세요. 이렇게 하면 대화형 셸이 시작 스크립트를 읽을 수 없습니다.

관련 정보