删除后命令 echo 仍正常工作

删除后命令 echo 仍正常工作

我想删除echo命令(位于/bin/echo),但命令 echo 仍然正常工作。当我使用which命令时,它确认echo已被删除

/usr/bin/which:没有回显(/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)

你知道发生了什么吗

答案1

bash 也是你的 shell 的一个内置命令(例如 bash、ksh 等),所以即使你删除了原始的 echo 二进制文件,它仍然可以在你的 shell 中工作(但你将无法像二进制文件那样使用参数等)。

请参阅这里的 bash 内置命令:http://www.gnu.org/software/bash/manual/html_node/Bash-Builtins.html

尝试在用户 .bash_profile 中添加此项(或从 shell 中添加):

enable -p echo

并尝试再次运行 echo (参考:https://astoryworthtelling.wordpress.com/2011/03/20/disable-bash-builtin-commands/)并且它不应该工作

答案2

Echo 是一个狂欢内置命令,这就是您所看到的。

我想真正的问题是:你为什么要这样做?有很多程序都依赖于 echo,如果禁用此命令,所有程序都会中断。

答案3

这实际上很好地说明了为什么在需要可移植的脚本中使用 echo 是个坏主意。它经常被 shell 内置函数覆盖。

看一下

man bash

并搜索 echo 来查找内置版本的定义位置。

答案4

根据您的需要,您仍然可以使用别名覆盖 echo

alias echo=':'

相关内容