这里发生了什么事 :
$ 回声 $SHELL /bin/bash $ 回声 -e "foo" 富 $哪个回声 /bin/回声 $ /bin/echo -e "foo" -e 富
最后一个输出应该是“foo”,就像echo
直接使用时一样。
/bin/echo
是一个程序,它不同于 Bash 内置echo
命令。
根据POSIX 标准,echo
不应该带任何参数。Bashecho
命令不遵循这个标准,GNU Coreutils 版本也不遵循。其他版本可能更严格。
/bin/echo
尝试通过使用标志调用它来找出是什么版本,--version
或者看看它是否为您提供了一些有关--help
标志的帮助。
此外,还man which
显示了这一点:
它返回将在当前环境中执行的文件(或链接)的路径名,其参数在严格符合 POSIX 的 shell 中作为命令给出。
Bash不是严格符合 POSIX 标准的,因此 的返回值which
可能不同(在这种情况下它确实是因为echo
内置的)。
如需进一步阅读,请参阅bash 脚本中的 echo output -e 参数的答案。我怎样才能防止这种情况?