मेरा ऑटोमेटर वर्कफ़्लो विफल हो जाता है क्योंकि यह 'रन शैल स्क्रिप्ट' कमांड के भीतर git कमांड को खोजने में विफल रहता है? मदद की ज़रूरत है


21

मेरे पास एक ऑटोमेटर वर्कफ़्लो है और एक क्रिया एक रिपॉजिटरी को क्लोन करने के लिए है। यहां 'रन शैल स्क्रिप्ट' कार्रवाई के लिए कोड है। आदेश बैश शेल के भीतर चलाया जाता है /bin/bashयदि वह मायने रखता है:

SOURCEDIR="${3/\/Volumes/}"

cd "$2"
REPOURL="bob@somedomain.com:$SOURCEDIR"
WORKINGDIR="$1"

# Capture any errors with cloning process in log file
git clone "$REPOURL" "$WORKINGDIR" &> ./log.txt

// For debugging
echo "exit code: $?"
echo "PPID: $PPID"

open .

अब ऑटोमेकर ऐप मेरी मशीन पर ठीक चलता है। मेरी मशीन पर गिट की राह (ए मैकबुक प्रो) है: /usr/bin/git(मेरा मानना ​​है कि मैंने अपनी मशीन पर एक्सकोड के माध्यम से गिट स्थापित किया है)

लेकिन मेरे सह-कार्यकर्ता की मशीन पर (इसके अलावा एक मैक प्रो) ऑटोमेकर ऐप विफल हो जाता है। वास्तव में, log.txt फ़ाइल का आउटपुट कहता है:bash: git: command not found

अब मेरे सह-कार्यकर्ता की मशीन पर गिट का रास्ता है: usr/local/git/binजो, हां, अलग है क्योंकि उन्होंने मैक ओएस एक्स के लिए Google गिट इंस्टालर के माध्यम से गिट स्थापित किया था, लेकिन मुझे नहीं लगा कि स्क्रिप्ट के कारण यह काम करना चाहिए। कमांड के लिए निरपेक्ष पथ नहीं है और आगे मेरे सहकर्मी बैश स्क्रिप्ट से सामान्य रूप से गिट चला सकते हैं, लेकिन जब टर्मिनल से सीधे आह्वान किया जाता है।

तो क्या देता है? ऑटोमेटर वर्कफ़्लो मेरे लिए क्यों नहीं बल्कि मेरे सहकर्मी के लिए काम करता है?

बैश या यूनिक्स के बारे में कुछ मौलिक होना चाहिए जिसे मैं यहां नहीं समझ रहा हूं लेकिन मैं हार गया हूं।

जवाबों:


36

ऑटोमेकर के माध्यम से चलने वाले स्क्रिप्ट डिफ़ॉल्ट खोज पथ का उपयोग करते हैं जिसमें आमतौर पर शामिल नहीं होता है /usr/local/bin। आपके मामले में एक आसान समाधान होगा

export PATH=/usr/local/bin:$PATH

स्क्रिप्ट की शुरुआत में कहीं।


मैं वास्तव में शीघ्र ही कोशिश की और यह या तो काम नहीं किया।
२०:२२

12

ऑटोमेटर में बैश के माहौल के लिए अपने सामान्य से अधिक समाधान के लिए आप ऑटोमोटिव बैश स्क्रिप्ट की पहली पंक्ति में अपनी व्यक्तिगत बैश प्रोफ़ाइल लोड कर सकते हैं:

source ~/.bash_profile

यह आपके ऑटोमेकर स्क्रिप्ट से उपलब्ध उपयोग करने के लिए आपके द्वारा उपयोग किए जाने वाले पथ और किसी भी अन्य पर्यावरण चर को बनाएगा।


मैं इस समाधान को बहुत पसंद करता हूं। बैश लॉगिन स्क्रिप्ट का एक अच्छा अवलोकन यहाँ है
Jay

4

मैंने उसी "सर्विस" वर्कफ़्लोज़ की एक ही समस्या का हल अलग-अलग कॉन्फ़िगर की गई मशीनों पर चलाया जा रहा है, जो कि तब होती है जब टर्मिनल शेल शुरू होता है और अंत में मेरे सभी "रन शैल स्क्रिप्ट" क्रियाओं के शीर्ष पर निम्नलिखित स्निपेट जोड़कर जाँच करता है:

if [ -x /usr/libexec/path_helper ]; then
    eval `/usr/libexec/path_helper -s`
fi
if  [ -f "$HOME"/.profile ]; then
    source "$HOME"/.profile
elif [ -f "$HOME"/.bash_profile ]; then
    source "$HOME"/.bash_profile
elif [ -f "$HOME"/.bashrc ]; then
    source "$HOME"/.bashrc
fi

इसमें उन सभी मामलों को शामिल किया गया है जो मैंने अब तक झेले हैं।


1

यदि आप चाहते हैं कि वर्कफ़्लो उन दोनों मशीनों पर काम करे, जिनमें अलग-अलग स्थानों पर गिट हैं, तो प्रत्येक स्थान को PATH चर में जोड़ें, जिसका उल्लेख किया गया है, जिसे एक के द्वारा अलग किया गया है :, जैसा कि यहाँ बताया गया है: https://developer.apple.com/library/mac /documentation/AppleApplications/Conceptual/AutomatorConcepts/Articles/ShellScriptActions.html

इसलिए, आपके वर्कफ़्लो शेल स्क्रिप्ट के शीर्ष पर, आप जोड़ देंगे:

PATH=/usr/bin:/usr/local/bin export PATH

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.