আমার অটোমেটর ওয়ার্কফ্লো ব্যর্থ হয়েছে কারণ এটি 'রান শেল স্ক্রিপ্ট' কমান্ডের মধ্যে গিট কমান্ডটি খুঁজে পেতে ব্যর্থ হয়েছে? সাহায্য দরকার


20

আমার একটি অটোমেটরের ওয়ার্কফ্লো আছে এবং ক্রিয়াকলাপগুলির মধ্যে একটি হ'ল একটি সংগ্রহস্থল ক্লোন করা। 'রান শেল স্ক্রিপ্ট' ক্রিয়াটির কোড এখানে। বাশ শেলের মধ্যে কমান্ডটি চালানো হয় /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যা হ্যাঁ, তিনি আলাদা কারণ তিনি ম্যাক ওএস এক্স এর জন্য গুগল গিট ইনস্টলারের মাধ্যমে গিট ইনস্টল করেছিলেন, তবে আমি মনে করি না যে এটি গুরুত্বপূর্ণ হওয়া উচিত কারণ স্ক্রিপ্টে গিট কমান্ডে কমান্ডের জন্য নিখুঁত পথ নয় এবং আরও আমার সহকর্মী একটি বাশ স্ক্রিপ্ট থেকে সাধারণত গিট চালাতে পারে তবে যখন টার্মিনাল থেকে সরাসরি আহ্বান করা হয়।

তাহলে কি দেয়? অটোমেটর ওয়ার্কফ্লো আমার জন্য কাজ করে তবে আমার সহকর্মীর জন্য নয়?

বাশ বা ইউনিক্স সম্পর্কে অবশ্যই কিছু মৌলিক বিষয় থাকতে হবে যা আমি এখানে বুঝতে পারি না তবে আমি হারিয়ে গিয়েছি।

উত্তর:


36

অটোমেটরের মাধ্যমে চালিত স্ক্রিপ্টগুলি ডিফল্ট অনুসন্ধানের পথ ব্যবহার করে যা সাধারণত অন্তর্ভুক্ত থাকে না /usr/local/bin। আপনার ক্ষেত্রে একটি সহজ ফিক্স করা হবে

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

স্ক্রিপ্টের শুরুতে কোথাও।


আমি তারপরে খুব শীঘ্রই চেষ্টা করেছি এবং এটিও কার্যকর হয়নি।
racl101

12

আপনার নিজের থেকে পৃথক হয়ে অটোমেটরের ব্যাশ পরিবেশের আরও সাধারণ সমাধানের জন্য আপনি কেবল স্বয়ংক্রিয় বাশ স্ক্রিপ্টের প্রথম লাইনে আপনার ব্যক্তিগত ব্যাশ প্রোফাইলটি লোড করতে পারেন:

source ~/.bash_profile

এটি আপনার অটোমেটর স্ক্রিপ্ট থেকে উপলব্ধ ব্যবহার করার জন্য ব্যবহার করছেন এমন পথ এবং অন্য কোনও পরিবেশের পরিবর্তনশীল করে দেবে।


আমি অনেকটা এই সমাধানটি পছন্দ করি। বাশ লগইন স্ক্রিপ্টগুলির একটি ভাল ওভারভিউ এখানে রয়েছে
জয়

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

যদি আপনি চান যে ওয়ার্কফ্লো উভয় মেশিনে বিভিন্ন স্থানে গিট কাজ করে, তবে প্যাটেক্স ভেরিয়েবলের দ্বারা পৃথক পৃথক পৃথক স্থানগুলির প্রতিটি অবস্থান যুক্ত করুন :, যেমন এখানে বর্ণিত : https://developer.apple.com/library/mac /documentation/AppleApplications/Conceptual/AutomatorConcepts/Articles/ShellScriptActions.html

সুতরাং, আপনার কর্মপ্রবাহ শেল স্ক্রিপ্টের একেবারে শীর্ষে, আপনি যুক্ত করবেন:

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

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.