bash 钩子会转移命令以阻止其执行(调试陷阱?)

bash 钩子会转移命令以阻止其执行(调试陷阱?)

作为教学工具的一部分,我需要完成的是将交互式 bash 命令转移到我正在编写的守护进程(到目前为止,一切顺利。感谢 bash-preexec)。

但是我需要 shell 实际上忽略该命令,然后我的守护进程会评估和执行该命令。

preexec 函数有没有什么办法可以修改 shell 实际执行的内容?

我尝试过,但没有成功:我认为“修改 BASH_COMMAND 应该可以”(在前面添加一个哈希,用冒号覆盖它,等等)。但是不行,我只能这样了。显然存在一个我无法理解的范围问题。

有任何想法吗?

答案1

一个匿名提示表明,preexec 的非零结果可以解决问题(完全避免执行,而不是修改命令)。

这就是解决方案。

参考:

相关内容