यदि आप वर्णन करते हैं कि कमांड लाइन पर चलने पर आप पूरी तरह से काम करते हैं, यदि आपको समस्याएँ हैं, तो मुझे लगता है कि आप इसे एक स्क्रिप्ट के भाग के रूप में करने की कोशिश कर रहे हैं (संकेत: यह उसी तरह की चीज है जिसे आप अपने प्रश्न में उल्लेख करना चाहते हैं)।
लिपियों को एक गैर-संवादात्मक खोल में चलाया जाता है और इस तरह के खोल में विस्तार नहीं किया जाता है। से 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