我的Automator工作流失败,因为它无法在“运行Shell脚本”命令中找到git命令?需要帮忙


20

我有一个Automator工作流程,其中一项操作是克隆存储库。这是“运行Shell脚本”操作的代码。/bin/bash如果重要的话,该命令在Bash shell中运行:

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 App在我的机器上可以正常运行。我的机器(Macbook Pro)上git的路径是:(/usr/bin/git我相信我通过Xcode在我的机器上安装了git)

但是在我同事的机器(也是Mac Pro)上,Automator App失败了。实际上,log.txt文件的输出显示:bash: git: command not found

现在在我同事的机器上,git的路径是:usr/local/git/bin,是的,有所不同,因为他是通过Mac OS X的Google Git安装程序安装git的,但我认为这没有关系,因为在脚本中git命令不是命令的绝对路径,而且我的同事可以从Bash脚本正常运行git,但是直接从终端调用时。

那有什么呢?为什么自动化器工作流程对我有效,但对我的同事却无效?

关于Bash或Unix一定有一些我不了解的基本知识,但我迷失了。

Answers:


36

通过Automator运行的脚本使用默认的搜索路径,该路径通常不包含/usr/local/bin。在你的情况下,一个简单的解决办法是

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

脚本开头的某个位置。


实际上,此后不久我就尝试了,但是也没有用。
racl101

12

对于不同于您自己的bash环境的更通用解决方案,您可以在automator bash脚本的第一行中简单地加载个人bash配置文件:

source ~/.bash_profile

这将使路径和您习惯使用的任何其他环境变量都可以从自动脚本中获得。


我非常喜欢这种解决方案。bash登录脚本的完整概述在这里
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

这涵盖了到目前为止我遇到的所有情况。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.