「シェルスクリプトの実行」コマンド内でgitコマンドが見つからないため、Automatorワークフローが失敗しますか?助けが必要


20

Automatorワークフローがあり、アクションの1つはリポジトリのクローンを作成することです。「シェルスクリプトの実行」アクションのコードを次に示します。/bin/bash重要な場合、コマンドは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 .

これで、Automatorアプリは私のマシンで正常に動作します。私のマシン(Macbook Pro)でのgitへのパスは次のとおりです/usr/bin/git(Xcodeでマシンにgitをインストールしたと思います)。

しかし、私の同僚のマシン(Mac Proでも)Automatorアプリは失敗します。実際、log.txtファイルの出力には次のように記載されています。bash: git: command not found

私の同僚のマシンでは、gitへのパスは次のとおりusr/local/git/binです。MacOS XのGoogle Gitインストーラーでgitをインストールしたため、これは違いますが、スクリプトではgitコマンドが重要だとは思いませんでしたコマンドへの絶対パスではなく、さらに同僚はBashスクリプトからgitを正常に実行できますが、ターミナルから直接呼び出された場合は。

それで何が得られますか?オートマトーラーのワークフローはなぜ機能するのに、同僚には機能しないのですか?

BashまたはUnixには、ここでは理解できないが、失われた基本的なものが必要です。

回答:


35

Automatorを介して実行されるスクリプトは、通常含まれないデフォルトの検索パスを使用します/usr/local/bin。あなたの場合、簡単な修正は置くことです

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

スクリプトの最初のどこかに。


その後すぐに実際に試してみましたが、うまくいきませんでした。
racl101

12

オートマトンのbash環境に対するより一般的なソリューションを自分のものとは異なるものにするには、オートマタbashスクリプトの最初の行で個人のbashプロファイルを単純にロードできます。

source ~/.bash_profile

これにより、使用するパスやその他の環境変数がオートマトンスクリプトから利用可能になります。


私はこのソリューションを大いに気に入っています。bashのログインスクリプトの良い概要ですここ
ジェイ

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

異なる場所にgitがある両方のマシンでワークフローを動作させる場合は:https://developer.apple.com/library/macのように、各場所をで区切ってpatrixが言及したPATH変数に追加します/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.