【问题标题】:Issue on ~/.bashrc, written file PATH is not correct [closed]~/.bashrc 上的问题,写入的文件 PATH 不正确 [关闭]
【发布时间】:2021-05-27 05:11:24
【问题描述】:

我正在我的 Ubuntu 16.04 计算机上下载 Go。我正在关注本教程,我无法在 youtube https://www.youtube.com/watch?v=YS4e4q9oBaU&t=1810s 上完成这部分的学习:

当我创建 Main.go 时,VSC 控制台上出现错误:

Failed to run '/usr/local/go/bin/go env' (cwd:/home/santiagoquinteros/code): 
Error: Command failed:/usr/local/go/bin/go env GOPATH GOROOT GOPROXY GOBIN GOMODCACHE
missing $GOPATH

如果我在控制台上写这个命令,就会出现:

~$ go get github.com/nsf/gocode
missing $GOPATH

这是我的 ~/.bashrc 里面的内容:

export GOROOT=/usr/local/go 
export PATH=$PATH:/usr/local/go/bin
export GOPATH=/home/santiagoquinteros/golib
export PATH=$PATH:$GOPATH/bin
export GOPATH=$gopath:/home/santiagoquinteros/code

在 19:10 到 25:15 的视频中,创建了这些代码行,我跟随他而没有做其他事情,但由于某种原因,VSC 将自己重定向到另一个我没有提到的 PATH。我也在正确的目录中创建了名为“golib”和“code”的两个文件夹。

我也在这些页面上进行了搜索,但他们的所有解决方案都对我没有帮助:

https://golang.org/doc/install
https://gist.github.com/vsouza/77e6b20520d07652ed7d
https://github.com/microsoft/vscode/issues/108003
https://github.com/microsoft/vscode-go/issues/2595
https://askubuntu.com/questions/1238895/go-cannot-find-goroot-directory-error-on-installing-go-in-wsl

请注意,我正在开发 ubuntu 16.04 的用户限制版本,这可能是主要问题。

VSC 代表 VisualStudioCode

【问题讨论】:

  • 您的 sn-p 在您的 bashrc 中有行,在行尾而不是下一行的开头包含 export。如果不是拼写错误,这可能会破坏您的导出语句
  • Export 是一个错字,我现在已经修复了,我不知道为什么我必须放 GOROOT,但是如果我不写我的 linux 机器不知道在哪里找到GO 文件夹,我不知道是什么导致了问题。问题依然存在。
  • 你的“系统”对GOROOT一无所知,它只被go命令使用,不应该被需要(我发现视频中谈到GOROOT的部分,即使作者被告知不要设置它,他们也完全忽略了它不是必需的,仍然建议设置它)
  • 您的HOME env 变量是否可能以某种方式未设置? GOPATH 的默认值是$HOME/go(这就是为什么您不需要设置GOPATH)。另外,您是在 shell 中执行了这些语句,还是再次登录?将行添加到您的 .bashrc 不会将它们添加到您当前的环境中(更不用说,这些应该在 .profile.bash_profile 中,而不是在 rc 文件中)。
  • 我发现我的 Ubuntu 机器除了一台普通的电脑外还有一些问题,这台机器来自我工作的公司(不是我的)并且有一些限制,其中一些可能导致这种麻烦。我有另一台电脑,一台 Windows 电脑和 Go 功能在那里没有任何问题。所以我想说这种问题只发生在用户受限的上下文中。

标签: bash go visual-studio-code path


【解决方案1】:

我猜错误信息来自https://github.com/golang/go/blob/release-branch.go1.16/src/cmd/go/internal/modload/init.go#L207-L210

在 ~/.bashrc 的最后一行中,您的意思是 export GOPATH=$GOPATH:...,而不是 export GOPATH=$gopath:...。由于 $gopath 没有设置,你的 GOPATH 最终会是:/home/santiagoquinteros/code。上面的代码不喜欢。

正如其他人所说,您不需要设置GOROOT。在 go1.16 中,模块模式是默认的,因此您可能不需要设置 GOPATH,而是使用默认的 GOPATH,即 $HOME/go

最近发生了很多变化。我推荐更新的材料集,例如https://golang.org/doc/#getting-startedhttps://learn.go.devhttps://play-with-go.dev/,...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-19
    • 1970-01-01
    • 2017-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多