То, что вы описываете, прекрасно работает, если вы запускаете его из командной строки, если у вас возникают проблемы, я предполагаю, что вы пытаетесь сделать это как часть сценария (подсказка: это то, что вы хотите упомянуть в своем вопросе).
Скрипты запускаются в неинтерактивной оболочке, и в этом виде псевдонимы оболочки не раскрываются. От man bash
:
Aliases are not expanded when the shell is not interactive, unless the
expand_aliases shell option is set using `shopt`
Итак, у вас есть несколько вариантов. Во-первых, вы можете активировать псевдонимы в вашем скрипте:
#!/usr/bin/env bash
shopt -s expand_aliases
alias build='xctool.sh'
type -a xctool.sh 2>/dev/null || alias build='xcodebuild'
build -scheme "${APP_SCHEME}" archive
Кроме того, вы можете полностью избежать псевдонимов, используя eval
:
#!/usr/bin/env bash
build='xctool.sh'
type -a xctool.sh 2>/dev/null || build='xcodebuild'
$build -scheme ${APP_SCHEME} archive