2017-06-29 33 views
0

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

下面是一个使用ls一个例子,因为它更简单:

.myfile

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

.notmyfile

ls_func2(){ 
    ls 
} 

需要注意的是.notmyfile是之前采购的这一点很重要.myfile是。我想要的是强制ls_func2直接拨打ls_func而不是ls

回答

2

采购在bash覆盖它们是相同的功能,所以在这种情况下,源顺序并不重要(直到你调用一个函数加载相关功能之前。

为了使这项工作将其添加到顶部您的脚本:?

shopt -s expand_aliases 

这个命令是用来做走样工作在非交互式脚本

+0

在'cd_func'的顶部或整个源文件的顶部 – ewok

+1

最好是在顶部的文件,但在创建之前别名也应该是足够的。 –

+0

所以我遇到了问题。我在源文件的顶部有命令。当我加载一个新的终端时,'ls_func2'不会调用'ls_func'(即它不通过别名)。我必须手动来源我的'.bash_profile'才能使它工作。 – ewok