'Kabuk Betiğini Çalıştır' komutunda git komutunu bulamadığı için Automator İş Akışı başarısız oluyor? Yardıma ihtiyacınız var


21

Bir Automator iş akışı var ve eylemlerden biri bir havuzu klonlamaktır. İşte 'Kabuk Betiğini Çalıştır' eyleminin kodu. Aşağıdaki durumlarda komut Bash kabuğunda çalıştırılır /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 .

Şimdi Automator Uygulaması makinemde iyi çalışıyor. Makinemde git (Macbook Pro) yolu: /usr/bin/git(Xcode aracılığıyla makineme git kurduğuma inanıyorum)

Ancak iş arkadaşımın makinesinde (Ayrıca bir Mac Pro) Automator Uygulaması başarısız oluyor. Aslında, log.txt dosyasının çıktısı şöyle der:bash: git: command not found

Şimdi iş arkadaşımın makinesinde git yolu: usr/local/git/binEvet, farklı, çünkü Mac OS X için Google Git Installer üzerinden git'i yükledi, ancak komut dosyasında git komutu nedeniyle bunun önemli olduğunu düşünmüyordum komutun mutlak yolu değildir ve dahası iş arkadaşım git'i bir Bash betiğinden normal olarak çalıştırabilir, ancak doğrudan Terminal'den çağrıldığında çalışabilir.

Öyleyse ne veriyor? Automator iş akışı benim için neden çalışıyor ancak iş arkadaşım için çalışmıyor?

Bash veya Unix hakkında burada anlamadığım ama kaybolduğum temel bir şey olmalı.

Yanıtlar:


36

Automator ile çalıştırılan komut dosyaları, genellikle içermeyen varsayılan arama yolunu kullanır /usr/local/bin. Sizin durumunuzda kolay bir düzeltme

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

senaryonun başında bir yerde.


Kısa bir süre sonra denedim ve işe yaramadı.
racl101

12

Automator'da kendi ortamınızdan farklı bash ortamına daha genel bir çözüm için, kişisel bash profilinizi automator bas komut dosyasının ilk satırına yükleyebilirsiniz:

source ~/.bash_profile

Bu, yolu ve kullanmaya alışkın olduğunuz diğer ortam değişkenlerini automator komut dosyanızdan kullanılabilir hale getirir.


Bu çözümü çok tercih ediyorum. Bash giriş betiklerine iyi bir genel bakış burada
Jay

4

Ben aynı "hizmet" iş akışları aynı sorunu terminal yapılandırmaya başladığında ne olacağını kontrol ederek ve sonunda aşağıdaki snippet'i tüm "Kabuk Komut Dosyasını Çalıştır" eylemlerimin üstüne ekleyerek çalışarak çözdüm:

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

Bu şimdiye kadar karşılaştığım tüm vakaları kapsar.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.