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