Мы можем определить git alias
для запуска команд оболочки следующим образом:
[alias]
echo = !echo
echo2 = !echo "$1" && echo "====" && echo "${@:2}" && :
(последний && :
используется, потому что аргументы командной строки снова добавляются в команду git, а :
превращает их в no-op
.)
Теперь мой вопрос как git запускает эти команды .Он запускает оболочку (например, sh
) для ее запуска?
Я пробовал описанный выше псевдоним на двух компьютерах, одном ubuntu
и одном centos
.В ubuntu
echo2
не удается развернуть параметр ${@:2}
, который в bash
расширяется до аргументов, начиная со второго до конца списка.
Я предполагаю, что в ubuntu
sh
используется, но sh
является ссылкой на dash
.К сожалению dash
не знает ${@:2}
.В centos
sh
связан с bash
и он работает.
Можем ли мы выбрать способ оболочки, используемой для запуска этих псевдонимов?