golang环境变量存储在哪里?

时间:2016-11-27 03:56:33

标签: go

我刚开始在Windows 7上学习golang。

go env,我得到了这个:

set GOARCH=amd64
set GOBIN=
set GOEXE=.exe
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOOS=windows
set GOPATH=E:\Workbench\Go
set GORACE=
set GOROOT=C:\DevTools\Go
set GOTOOLDIR=C:\DevTools\Go\pkg\tool\windows_amd64
set CC=gcc
set GOGCCFLAGS=-m64 -mthreads -fmessage-length=0
set CXX=g++
set CGO_ENABLED=1

然后我在命令行中使用echo %envVar%进行了检查,发现了env vars,如:

GOPATH
GOROOT

但是找不到其他人。

那么他们存放在哪里?一些隐藏的配置文件?

5 个答案:

答案 0 :(得分:6)

这些只是您平台的默认设置。将它们视为存储在go.exe可执行文件本身中。

您可以通过将它们设置为其他任何其他env var。

来覆盖它们

答案 1 :(得分:3)

与@David Budworth所说的一样,这些变量是您平台的默认值。

大多数情况下,我们会更改$GOPATH$GOROOT个变量。例如,在我的PC中,我使用export GOPATH=/home/user/go,你的可能与我的不同。

否则,如果您想查找存储其他变量的位置,您需要查看/usr/lib/go-1.6/src(对不起我现在使用Ubuntu并执行1.6并且我不知道知道在Windows中的go的路径目录,你会发现在构建bash时使用了很多go executable scripts

例如:

在文件中:make.bash您会看到:$GROOT已在此处声明并用于构建最终go executable

export GOROOT="$(cd .. && pwd)"

我也看到了您对GOTOOLDIR的评论以及它如何知道您的安装位置。我会说,go的源代码有答案,你可以找到它here

// ToolDir is the directory containing build tools.
var ToolDir = filepath.Join(runtime.GOROOT(), "pkg/tool/"+runtime.GOOS+"_"+runtime.GOARCH)

修改 我找到了关于构建go的好文章:How GO uses to build itself

PS:抱歉我的英文。我不是母语为英语的人。

答案 2 :(得分:1)

请在命令提示符下键入以下命令

> go env GOENV
/root/.config/go/env

答案 3 :(得分:0)

在go1.13中,自定义的GOENV存储在GOENV中,这由系统环境变量指定。如果未指定,将使用默认值'$ HOME / .config / go / env'。

>$ go env
GO111MODULE=""
GOARCH="amd64"
GOBIN="/home/leonardo/go/bin"
GOCACHE="/home/leonardo/.cache/go-build"
GOENV="/home/leonardo/.config/go/env" # if system environment 'GOENV' is empty, the default value '$HOME/.config/go/env' will be used.
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/home/leonardo/go"
GOPRIVATE=""
GOPROXY="https://goproxy.cn,direct" # default value is "https://proxy.golang.org,direc"
>$ cat /home/leonardo/.config/go/env
GOPROXY=https://goproxy.cn,direct

在此文件中以“ KEY = VALUE”形式定义的环境变量将覆盖硬编码为https://github.com/golang/go/blob/57662b1575030aa09043cd7a48425abdc6e0e0a3/src/cmd/go/internal/cfg/cfg.go#L229的默认值

答案 4 :(得分:0)

默认情况下,{_ 1}}在mac_os上不存在。

env_file

执行“ env_file: $HOME/Library/Application Support/go/env ”后,go env -w $HOME/go已创建。