以编程方式在Heroku中运行bash脚本文件

时间:2015-11-30 18:57:12

标签: bash heroku go

我有一个用Go编写并在Heroku上部署的Web应用程序。最近,我实现了一个需要运行bash脚本文件并检索其输出的新功能。我使用的命令是:

out, err := exec.Command("bash", script_path, arg).Output()

其中script_path是脚本的绝对路径。 (它是使用调用者文件路径动态构建的)而arg是脚本的输入。

此命令在我的本地计算机中正常工作,但在Heroku中不能正常工作:

  

18:51:40 http:恐慌服务10.238.8.204:17763:退出状态127

ps:如果我在" heroku运行bash "上运行相同的命令,它就可以运行。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

shell返回代码127用于指定"命令未找到"。

您可以通过这个小例子看到这种行为。

$ nonesuch
-bash: nonesuch: command not found
$ echo $?
127

此类问题通常意味着您需要添加

 /full/path/to/myscriptdir

PATH env var。即。

 export PATH="$PATH:/full/path/to/myscriptdir withSpaces" 

有几个地方可以实现,但这取决于你的组织规则。

要立即解决问题,请添加到运行Heroku的userID的$HOME/.profile文件中,或者可能会添加一个Heroku特定的配置文件。 (我没有Heroku的经验)。

有趣的是,这篇文章Heroku config files没有提到PATH变量。

正如您所发现的,您可以编辑代码以直接包含完整路径,即

out, err := exec.Command("/bin/bash", path.Join(".", "src", "ext", "dextenso.sh"), 

IHTH

相关问题