새롭고 깨끗한 bash 인스턴스에서 예상되는 결과를 얻습니다.
$ printf "a\td\n" | cat -vE
a d$
$
$ file <(printf "a\td\n" | cat -vE)
/dev/fd/63: symbolic link to pipe:[6664004]
하지만 현재 다음을 반환하는 bash 인스턴스가 있습니다.
$ printf "a\td\n" | cat -vE
a d$
$
$ file <(printf "a\td\n" | cat -vE)
bash: syntax error near unexpected token `('
$
$ type -a printf
printf is a shell builtin
printf is /usr/bin/printf
printf is /bin/printf
$
$ type -a file
file is /usr/bin/file
file is /bin/file
이 오류의 원인은 무엇입니까?
환경 변수를 비교해 보면 새로운 bash 인스턴스와 큰 차이가 없습니다. 이번에도 현재 세션에 존재하는 변수에는 특별한 내용이 없습니다. 어떤 단서가 있나요? ...
답변1
POSIXLY_CORRECT
이전에 실행했던 것처럼 우연히 변수가 설정되었습니다 set -o posix
.
내 변수 목록에 있지만, POSIXLY_CORRECT=y
언뜻 보기에 이것이 이유일 것이라고는 생각하지 못했습니다. (차라리 명령 이름과의 간섭을 찾고 싶습니다.)
재설정을 사용하면 set +o posix
문제가 해결되었습니다.