Я переключаюсь с bash на fish, но у меня проблемы с портированием удобной функции, которую я часто использую. Смысл этой функции в том, чтобы запускать make из корневого каталога моего исходного дерева независимо от того, в каком каталоге в данный момент находится моя оболочка.
В bash это было просто:
function omake {(
cd $SOURCE_ROOT;
make $@;
)}
Поскольку у рыбы нет подоболочек, лучшее, что я смог сделать, это:
function omake
pushd
cd $SOURCE_ROOT
make $argv
popd
end
Это работает, но с оговоркой, что после прерывания версии fish с помощью ^C оболочка все еще находится в $SOURCE_ROOT, но прерывание версии bash возвращает меня в исходный каталог.
Есть ли способ написать скрипт, который работает так же, как bash в fish?