Log*_*gan 5 linux bash environment-variables fish
对于那些不知道 Fish 是什么的人:http : //fishshell.com/
同样,如果您不熟悉 Go 编码环境,但仍想尝试解决这个小难题,这里有一些信息:http : //golang.org/doc/code.html
无论如何,所以我正在尝试建立一个 Go-lang 开发人员。我正在尝试使用 Fish 的新机器上的环境。
所以我$GOPATH
设置为/home/<me>/workspace/go-workspace
在这两个bash
和fish
。这意味着该go
工具需要一个bin
,pkg
和src
最底下目录。哪个在那里。
但是,go get
在带有一些代码(通常会下载它的依赖项)的目录中输入时会产生
package code.google.com/p/go.crypto/openpgp: cannot download, $GOPATH not set. For more details see: go help gopath
package code.google.com/p/go.crypto/openpgp/armor: cannot download, $GOPATH not set. For more details see: go help gopath
package code.google.com/p/go.crypto/ssh: cannot download, $GOPATH not set. For more details see: go help gopath
package github.com/codegangsta/cli: cannot download, $GOPATH not set. For more details see: go help gopath
package github.com/oleiade/reflections: cannot download, $GOPATH not set. For more details see: go help gopath
package launchpad.net/goamz/aws: cannot download, $GOPATH not set. For more details see: go help gopath
package launchpad.net/goamz/s3: cannot download, $GOPATH not set. For more details see: go help gopath
Run Code Online (Sandbox Code Playgroud)
我知道这绝对是错误的,因为我可以运行echo $GOPATH
并弹出我设置的值。
然后,奇怪的是,如果我bash
使用相同的$GOPATH
集合运行相同的命令,它就可以工作。
谁能告诉我为什么?
或者,更一般地说,您能告诉我为什么程序会在一个 shell 中检测到环境变量而不是另一个吗?
ric*_*ici 10
你记得把$GOPATH
鱼标记为出口吗?
set -x GOPATH /home/<me>/workspace/go-workspace
Run Code Online (Sandbox Code Playgroud)
用它测试是不够的
echo $GOPATH
Run Code Online (Sandbox Code Playgroud)
因为无论是否导出变量,这都将起作用。检查
bash -c 'echo $GOPATH'
Run Code Online (Sandbox Code Playgroud)
GOPATH
如果它已被导出,它只会打印值。在 bash 中,您可以像这样导出变量:
export GOPATH=/home/<me>/workspace/go-workspace
Run Code Online (Sandbox Code Playgroud)