bash - 如何修复我的 GOROOT 和 GOPATH 变量以运行 go?

标签 bash go environment-variables ubuntu-14.04 .profile

操作系统:Ubuntu 14.04

.bashrc 中的行(尝试了以下两种方法)

# GoPath (without goroot)
export GOPATH=$HOME/gowork

...

# GoPath (with goroot)
export GOROOT=/usr/local/go
export GOPATH=$HOME/gowork

注意:我尝试设置上述环境变量,首先在 .profile 中,然后在 .bashrc 中,不同的人以不同的方式建议。

尝试运行以下代码

package main

import "fmt"

func main() {
    fmt.Println("Hello World!")
}

终端中的错误信息

go run helloworld.go 
helloworld.go:3:8: cannot find package "fmt" in any of:
    /usr/local/go/src/pkg/fmt (from $GOROOT)
    /home/arif/gowork/src/fmt (from $GOPATH)
package runtime: cannot find package "runtime" in any of:
    /usr/local/go/src/pkg/runtime (from $GOROOT)
    /home/arif/gowork/src/runtime (from $GOPATH)

编辑

去env输出

GOARCH="amd64"
GOBIN=""
GOCHAR="6"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/arif/gowork"
GORACE=""
GOROOT="/usr/local/go"
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
CC="gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0"
CXX="g++"
CGO_ENABLED="1"

go版本输出

go version go1.3.3 linux/amd64

提示

我记得我安装的 tar 是 go1.6.linux-amd64.tar.gz,这意味着应该显示 go 版本 1.6 但我的终端输出的是 1.3.3。

最佳答案

除非您知道为什么要设置它,否则您通常不必设置 $GOROOT

这假定了 Go 的“正常”安装。如果您移动了 go 二进制文件,或者删除了 pkg 或 src 文件夹,您的里程可能会有所不同。

此外,请确保在您打算使用的版本之前,在您的 $PATH 中找不到旧版本的 go。

在这种情况下,@Bangash 必须删除旧的/usr/bin/go 并将/usr/local/go/bin 添加到他的 PATH 环境变量中。

Usually people use $GOROOT在多个版本的 go 之间切换时。

请阅读评论并讨论解决方案。

关于bash - 如何修复我的 GOROOT 和 GOPATH 变量以运行 go?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36299375/

相关文章:

linux - Bash 脚本复制最新文件并将输出发送到电子邮件 ID

go - 我应该用互斥量保护结构对象吗?

loops - 在嵌套 for 循环中使用并发? (蛮力)

ios - 添加环境变量会影响 iOS 上的应用程序速度吗?

c++ - 如何在编译时查找环境变量是否存在?

javascript - grunt-ng-constant 不生成配置脚本

bash - bash rm -rf!上的语法错误意外的标记

linux - 十六进制转义为文本(UTF-8)、bash 脚本

linux - 使用 bash 迭代排序和就地替换文件

go - 这段go代码有什么问题,os.Stdin是什么?