bash: 强制函数调用别名

bash: force function to call alias

我有一个函数用来代替 cd,并且我有 cd 别名来调用它。我的问题是,是否可以强制所有函数和脚本通过别名调用我的cd_func,而不是直接调用cd

这里有一个使用 ls 的例子,因为它更简单:

.myfile:

ls_func(){
    echo "function called"
    dir
}
alias ls=ls_func

.notmyfile

ls_func2(){
    ls
}

重要的是要注意 .notmyfile 的来源早于 .myfile 的来源。我想要的是强制 ls_func2 直接调用 ls_func 而不是 ls

bash 中的源代码会覆盖相同的函数,因此在这种情况下源代码顺序无关紧要(直到您在加载相关函数之前调用函数。

要完成这项工作,请将其添加到脚本的顶部:

shopt -s expand_aliases

此命令用于在非交互式脚本中使用别名。