我正在尝试编写一个 bash 脚本以在不同的目录中自动运行 go get/install。相关部分在这里:
( cd ../web ; go get )
( cd ../web ; go install )
( cd ../services ; go get )
( cd ../services ; go install )
当我执行脚本时,我得到了这个:
- cd ../网络
- 去拿
./staging.sh:第 43 行:go:找不到命令 - cd ../网络
- 开始安装
./staging.sh:第 44 行:go:找不到命令 - CD ../服务
- 去拿
./staging.sh:第 45 行:go:找不到命令 - CD ../服务
- 开始安装
./staging.sh:第 46 行:go:找不到命令
如果我只是手动转到目录并运行命令,它们工作正常。为什么它们在从脚本运行时不执行?
最佳答案
我猜您是按照 go 安装页面上的安装说明进行操作,该页面告诉您向 ~/.profile
文件中添加一些行。此文件 doesn't load for non-interactive sessions (eg; your script.)因此,您要么需要将它添加到 shell 的 rcfile,要么通过脚本中的完整路径引用 go 二进制文件。
您可以通过在您的 shell 中运行找到 go
的完整路径:
$ which go
/path/to/go
然后,在你的脚本中:
GO=/path/to/go
$GO command
或者,您可以在脚本中扩展您的 PATH
:
PATH=$PATH:/path/to
关于Bash 脚本无法执行 Go 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39186854/