如何使 bash 别名调用取决于 PWD?

如何使 bash 别名调用取决于 PWD?

我目前有这个别名:

alias cmakerel='cmake -DCMAKE_BUILD_TYPE=Release -Wno-dev ../../ && make -j4'

本质上,它将调用 cmakeout-of-source从 PWD 进行构建。它工作正常,但就其本身而言,它可以从几乎任何地方运行(我不想要)。

我如何修改此别名,以便只有当字符串bld位于我当前的工作目录中时它才运行?

我需要这个改变,因为如果没有它,我有时会意外地从 tst 目录或其他目录调用这个命令,从而造成一片混乱。

答案1

man bash

对于几乎所有用途来说,别名都被 shell 函数所取代。

因此使其成为一个 shell 函数。

function cmakerel {
    if expr match "$PWD" '.*bld.*' >/dev/null ; then
        cmake -D....
    else
        echo "Wrong directory!"
    fi
}

这是一个正则表达式,您可以根据自己的需要进行调整。

相关内容