`command echo`似乎不尊重`echo`参数

neo*_*f33 2 macos shell

commandMac OS X中的2.6.0版本的实用程序似乎不遵守传入的echo命令参数.

如果这是一个合法的错误 - 你能否请我指向该实用程序的项目页面.谢谢!

预期

$ command echo -e "activate\ndeactivate"
activate
deactivate
Run Code Online (Sandbox Code Playgroud)

实际

$ command echo -e "activate\ndeactivate"
-e activate\ndeactivate
Run Code Online (Sandbox Code Playgroud)

附加信息

$ command ls -al
total 3
drwxr-xr-x  13 siva  staff   442 Sep 28 10:52 .
drwxr-xr-x   7 siva  staff   238 Sep 19 14:21 ..
drwxr-xr-x  13 siva  staff   442 Sep 28 10:52 .git

$ command ls -a1 
.
..
.git

$ echo -e "activate\ndeactivate"
activate
deactivate
Run Code Online (Sandbox Code Playgroud)

Cha*_*ffy 5

echo -e是一个非标准的bash扩展.它不仅不是标准所要求的,它甚至不被标准所允许,它明确规定"实现不应支持任何选项".

bash通过尊重-e选项来打破标准(除非设置了两个posixxpg_echo选项,在这种情况下它的行为与外部echo命令相同).

因此,当您运行echoOS供应商提供的外部命令时,它是符合http://pubs.opengroup.org/onlinepubs/9699919799/utilities/echo.html的实现,它-e通过打印字符串来响应.


作为POSIX兼容的替代品echo -e "$foo",使用printf '%b\n' "$foo".