Waveter Asked: 2017-03-13 05:13:40 +0800 CST2017-03-13 05:13:40 +0800 CST 2017-03-13 05:13:40 +0800 CST 删除后命令回显仍然正常工作 772 我想删除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/斌:/根/斌) 你知道发生了什么吗 linux redhat echo 4 个回答 Voted EEAA 2017-03-13T05:23:52+08:002017-03-13T05:23:52+08:00 Echo 是一个bash内置命令,这就是您所看到的。 我想真正的问题是:你为什么要这样做?有很多很多依赖 echo 的程序,如果禁用此命令,所有程序都会中断。 Best Answer olivierg 2017-03-13T05:19:39+08:002017-03-13T05:19:39+08:00 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/ )它不应该工作 hvindin 2017-03-13T05:46:00+08:002017-03-13T05:46:00+08:00 这实际上很好地说明了为什么在您希望可移植的脚本中使用 echo 是一个坏主意。它经常被 shell 内置插件覆盖。 看一下 man bash 并搜索 echo 以查找定义内置版本的位置。 Julien 2017-03-18T07:41:56+08:002017-03-18T07:41:56+08:00 根据您的需要,您仍然可以使用别名覆盖 echo alias echo=':'
Echo 是一个bash内置命令,这就是您所看到的。
我想真正的问题是:你为什么要这样做?有很多很多依赖 echo 的程序,如果禁用此命令,所有程序都会中断。
bash 也是你的 shell 中的一个内置函数(例如 bash、ksh 等),所以即使你删除了原始的 echo 二进制文件,它仍然可以在你的 shell 中工作(但你不会像二进制文件一样使用参数等)
在此处查看 bash 内置函数:http ://www.gnu.org/software/bash/manual/html_node/Bash-Builtins.html
尝试将其添加到用户 .bash_profile (或从 shell)中:
并尝试再次运行 echo (参考:https ://astoryworthtelling.wordpress.com/2011/03/20/disable-bash-builtin-commands/ )它不应该工作
这实际上很好地说明了为什么在您希望可移植的脚本中使用 echo 是一个坏主意。它经常被 shell 内置插件覆盖。
看一下
并搜索 echo 以查找定义内置版本的位置。
根据您的需要,您仍然可以使用别名覆盖 echo