Как запустить функцию Bash с использованием псевдонима Git

Я хочу использовать псевдоним Git в ~/.gitconfig, чтобы он вызывал функцию bash, если она определена, в противном случае вызовите обычный git checkout,

Вот что я разработал:

cat ~/.gitconfig
...
[alias]
...
    co = !(compgen -A function vxzExecuteGitCheckout >/dev/null && vxzExecuteGitCheckout ) || git checkout

Проблема в том, что Git использует /bin/sh (что dash в моем случае) compgen так как это bash встроенный.

Любой способ убедиться, что Git использует bash выполнить эту команду?

Обратите внимание, что vxzExecuteGitCheckout() определяется в файле, который пока не включен в ~/.bashrc.

Другой вопрос, если бы я использовал git co -b param1 param2 ...будет ли приведенное выше определение псевдонима передаваться -b param1 param2 в git checkout если эта функция Bash не найдена?

1 ответ

Использование bash явно:

co = !bash -c '( compgen -A function vxzExecuteGitCheckout >/dev/null && vxzExecuteGitCheckout ) || git checkout' -

другой возможностью было бы написать сценарий оболочки с правильной строкой shebang #!/bin/bash и вызвать этот скрипт для alias.co (см. вопрос " Как встроить скрипт bash непосредственно в псевдоним git")

Другие вопросы по тегам