我有一个运行Go程序的bash脚本。就是这样,当我从命令行运行它时,它运行正常。
但是当我通过在Finder中双击它来运行它时,它会返回
/Users/colin/go/metgen/metaphorgenerator.sh: line 2: ./binary: No such file or directory
所以我让它回显它的工作目录,它只打印我的主目录/Users/colin
。
如何让它运行文件所在目录中的代码? (无论它在哪个目录中,我希望它能够工作)
答案 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
。