【发布时间】:2019-05-06 17:39:57
【问题描述】:
是否可以拦截 bash 中的所有命令并阻止其中一些命令执行?与 'trap' 命令一样,只是不允许进一步执行命令。
我是一名网络开发人员,目前正在开发一个小型项目/脚本,通过动态添加不同的别名来帮助网络开发人员的日常生活。例如,作为一名 Web 开发人员,在 Ubuntu 上,通常会将所有项目托管在 /var/www/ 结构中,因此可以在该 (/var/www) 文件夹中为这些文件夹起别名。我想稍微改进一下我的脚本,并根据项目构建的框架为项目添加别名。如果是 Magento 2,那么通过运行 setup:upgrade 它应该运行“bin/magento setup:upgrade”。 我试过陷阱“某事”调试,但据我所知,无法阻止前面的命令。 谢谢!
【问题讨论】:
-
您是否考虑过编写一个脚本/函数来检查当前目录并相应地执行命令,而不是尝试拦截命令并取消它?'
-
最初的计划是修复拼写错误,所以如果函数能够及时动态地创建,那就太酷了。如果无法进行拦截,这就是我会采用的方式。谢谢!
-
您始终可以使用函数或别名覆盖命令,然后选择(或不)调用支持命令
-
如果您使用 Linux,请查看SELinux。
-
@thatotherguy,是否有可能在执行时以某种方式自动执行?如果我想拦截所有命令,我必须为“compgen -acb”的所有结果起别名(很多,3000+)。我试图通过在前面提到的陷阱中创建别名来做到这一点,但似乎操作系统已经考虑到它将执行什么,并且别名在第一个陷阱中不起作用。
标签: bash