脚本从命令行运行,但不是从finder运行

时间:2018-06-01 22:54:09

标签: bash macos

我有一个运行Go程序的bash脚本。就是这样,当我从命令行运行它时,它运行正常。

但是当我通过在Finder中双击它来运行它时,它会返回 /Users/colin/go/metgen/metaphorgenerator.sh: line 2: ./binary: No such file or directory

所以我让它回显它的工作目录,它只打印我的主目录/Users/colin

如何让它运行文件所在目录中的代码? (无论它在哪个目录中,我希望它能够工作)

2 个答案:

答案 0 :(得分:1)

您需要将其指向可执行文件的位置,或者使用工作目录中的相对路径(如go/metgen/binary},绝对路径(例如/Users/colin/go/metgen/binary)或absolute path based on the parent executable(不幸的是{ {3}})。

答案 1 :(得分:0)

$0是完整的程序名称。因此,您可以使用HERE=$(dirname "$0")获取目录。

然后,第2行应该有${HERE}/binary