【问题标题】:bash: force function to call aliasbash:强制函数调用别名
【发布时间】:2017-07-02 10:56:36
【问题描述】:

我有一个代替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 alias


    【解决方案1】:

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

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

    shopt -s expand_aliases
    

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

    【讨论】:

    • cd_func的顶部还是整个源文件的顶部?
    • 最好在文件顶部,但在创建别名之前也应该足够了。
    • 所以我遇到了问题。我在源文件的顶部有命令。当我加载一个新终端时,ls_func2 不会调用ls_func(即它不会通过别名)。我必须手动获取我的 .bash_profile 才能使其正常工作。
    • 将您的 .bash_profile 添加到问题中,以便找到关系。
    猜你喜欢
    • 1970-01-01
    • 2013-03-02
    • 2014-03-11
    • 1970-01-01
    • 1970-01-01
    • 2018-12-14
    • 2023-04-02
    • 2011-11-06
    • 2012-06-09
    相关资源
    最近更新 更多