To, co opisujesz, działa idealnie, jeśli działa w wierszu poleceń, jeśli masz problemy, zakładam, że próbujesz to zrobić jako część skryptu (wskazówka: to jest coś, o czym chcesz wspomnieć w swoim pytaniu).
Skrypty są uruchamiane w nieinteraktywnej powłoce i w tego rodzaju aliasach powłoki nie są rozwijane. Od man bash
:
Aliases are not expanded when the shell is not interactive, unless the
expand_aliases shell option is set using `shopt`
Masz więc kilka możliwości. Najpierw możesz aktywować aliasy w swoim skrypcie:
#!/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
Alternatywnie możesz całkowicie uniknąć aliasów, używając eval
:
#!/usr/bin/env bash
build='xctool.sh'
type -a xctool.sh 2>/dev/null || build='xcodebuild'
$build -scheme ${APP_SCHEME} archive
eval
? (i być mniej podatnym na problemy z ekspansją):$build -scheme "${APP_SCHEME}" archive
Nie wiem, co
type
tu robić; ale kiedy mam rację, coś takiego może być pomocne:źródło
Spójrz na
man test
flagi -e / -f.Może coś takiego działa:
źródło