小编acm*_*acm的帖子

覆盖与系统命令同名的用户定义函数

这个函数存在于我的一个用户的 ~/.bashrc 中:

function rm()
{
        ls $*
        echo "rm?"
        read ans
        if [ "$ans" == 'y' ]; then
                /bin/rm $*
        fi
}
Run Code Online (Sandbox Code Playgroud)

在我要求用户运行的 ksh 脚本中,我有这样一行:

[[ "$KEEP" = "" ]] && \rm $FILE
Run Code Online (Sandbox Code Playgroud)

虽然反斜杠转义用户定义的别名,但它不会阻止脚本运行具有相同名称的用户定义函数。结果,我的用户的 rm() 函数被调用而不是系统函数。

我发现了这个超级用户问题问题和回复,但该解决方案仅适用于内置函数,而不适用于系统命令。

强制调用 rm 命令而不是别名或函数的最佳方法是什么?我是否必须指定 rm 的完整路径以及我想确保正确执行的每个系统命令?有没有更好的办法?

bash alias ksh bashrc

14
推荐指数
1
解决办法
8502
查看次数

标签 统计

alias ×1

bash ×1

bashrc ×1

ksh ×1