Не удается найти GOPATH, даже установить путь env

Используя установленного пользователя root, перейдите в Linux.

Укажите путь перехода в файле ~/.zshrc:

export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
$ ls $HOME/go
bin pkg src

$ ls $HOME/go/bin
asmfmt  dlv  errcheck  fillstruct  gocode  gocode-gomod  godef  gogetdoc  goimports  golint  gometalinter  gomodifytags  gorename  gotags  gounit  guru  iferr  impl  keyify  motion

Но go env вернулся:

zsh: command not found: go

Почему?


Добавление

$ whereis go
go: /usr/local/go

Установите /usr/local в ~/.zshrc:

export PATH=$PATH:/usr/local/

Источник его. Запуск go env вернул:

zsh: permission denied: go

person 02040402    schedule 24.06.2019    source источник
comment
Добавьте каталог, в который вы установили Go, в свой PATH.   -  person Cerise Limón    schedule 24.06.2019
comment
@CeriseLimón Добавьте что-нибудь к вопросу.   -  person 02040402    schedule 24.06.2019
comment
поставьте себе export PATH=/usr/local/go/bin:${PATH}   -  person Scott Stensland    schedule 24.06.2019
comment
@ScottStensland Теперь это работает! Итак, GOPATH должно быть /usr/local/go, которое было установлено?   -  person 02040402    schedule 24.06.2019
comment
@02040402 Не задавайте GOPATH для каталога установки. Простой подход — вообще не устанавливать GOPATH. В этом случае инструмент go будет использовать $HOME/go в качестве рабочей области.   -  person Cerise Limón    schedule 24.06.2019


Ответы (1)


Как уже отмечалось, ваш файл ~/.zshrc должен установить PATH для ссылки на Go, как показано в Go вики:

Отредактируйте файл ~/.zshrc, добавив следующую строку:

export GOPATH=$HOME/go

Сохраните и выйдите из редактора. Затем укажите источник ~/.zshrc.

source ~/.zshrc

Как объясняется в по умолчанию GOPATH и issue 17262, вам не нужно устанавливать GOPATH.

Но поскольку Go 1.11 и его модули, теперь вы можете создавать целые проекты без когда-либо использовать GOPATH по умолчанию: все останется локальным для вашего проекта.

Начиная с Go 1.11, команда go позволяет использовать модули, когда текущий каталог или любой родительский каталог имеет go.mod, при условии, что каталог находится за пределами $GOPATH/src.
(Внутри $GOPATH/src, для совместимости, команда go по-прежнему выполняется в старом GOPATH, даже если найден go.mod)

person VonC    schedule 24.06.2019