我正在从 bash 切换到 fish,但是在移植我经常使用的便利功能时遇到了麻烦。这个函数的重点是从我的源代码树的根目录运行 make,而不管我的 shell 当前在哪个目录中。
在 bash 中,这很简单:
function omake {(
cd $SOURCE_ROOT;
make $@;
)}
由于鱼没有亚壳,所以我能做的最好的事情是:
function omake
pushd
cd $SOURCE_ROOT
make $argv
popd
end
这可行,但需要注意的是,在使用 ^C 中断 fish 版本后,shell 仍在 $SOURCE_ROOT 中,但中断 bash 版本会使我回到原始目录。
有没有办法编写一个与鱼中的 bash 相同的脚本?