删除后,命令echo仍然正常工作

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

/ usr / bin /其中:(/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/仓:/根/ bin)中

你知道发生了什么

bash也是你的shell中的一个内build函数(例如bash,ksh等),所以即使你删除了原始的echo二进制文件,它仍然可以在你的shell中工作(但是你不会像二进制文件一样提供参数等)

在这里看到bash buildins: http ://www.gnu.org/software/bash/manual/html_node/Bash-Builtins.html

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

 enable -p echo 

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

回声是一个bash内build的命令,这是你所看到的。

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

这实际上是一个很好的演示,为什么在你想要可移植的脚本中使用echo是一个坏主意。 它通常被shell内置的ins覆盖。

看一下

 man bash 

并search回声find内置版本的定义。

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

 alias echo=':'