防止shell脚本中的命令在另一个shell脚本中执行

时间:2013-05-08 18:24:21

标签: shell unix command delete-file

我在另一个shellcript中调用一个shellcript,并且被调用的一个命令删除了一个我不想被执行的文件夹,比如这个

$ rm ../temp -rf

有没有办法在不更改调用的脚本内容的情况下阻止执行此命令?

1 个答案:

答案 0 :(得分:0)

您可以在脚本中定义这样的别名:

alias rm='echo SAFE'

默认情况下,别名仅在交互式shell中起作用,因此您必须使用以下命令更改此行为:

shopt -s expand_aliases
在您的脚本中

并获取另一个脚本(您无法更改的脚本):

source the_other_script.sh

. the_other_script.sh

除非另一个脚本在子shell中运行rm,否则这将有效。

另一种更安全的方法是创建自己的rm命令,该命令不执行任何操作(或只打印出其参数,以便您知道发生了什么),将其放入目录并将此目录作为第一个目录放入这样的PATH环境变量(Korn shell语法):

$ export PATH=/path/to/your/dummy/rm/replacement:$PATH