新しいクリーンな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
問題が解決しました。