“bash:意外标记‘(’附近的语法错误”进程替换错误

“bash:意外标记‘(’附近的语法错误”进程替换错误

在一个新鲜、干净的 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解决了问题。

相关内容