在某些目录中更改别名或路径

在某些目录中更改别名或路径

当我进入特定文件夹时,有没有办法更改别名或 PATH 变量cd(反之亦然,当我更改出别名时,将别名改回来/恢复 PATH)?现在,我有一个别名dc="docker-compose",当我在特定目录中时,我想向该命令添加参数。

答案1

你可以使用shell 函数代替别名,并让它根据值有条件地添加参数$PWD

dc ()
{
    case $PWD in
        "path to/somedir")
            set -- foo bar "$@"
        ;;
        *)
            :    
        ;;
    esac;
    docker-compose "$@"
}

也可以看看在 Bash 中,何时使用别名,何时使用脚本,何时编写函数?

请注意,这dc也是命令行计算器实用程序的名称,因此您可能需要选择不同的名称。

答案2

对于每个“特殊”目录,创建一个包含别名命令的./.set_alias文件,以及一个包含相应命令的文件。alias./.clear_aliasunalias

然后,颠覆cd内置功能。

在你的~/.bashrc

cd()
{

    [[ -f ./.clear_alis ]] &&;source ./.clear_alis

    # do the "cd"
    [[ -z "$*" ]] && builtin cd $HOME
    [[ -n "$*" ]] && builtin cd "$*"
    
    [[ -f ./.set_alis ]] && source ./.set_alis
}

没有这些文件的目录不会受到影响。

相关内容