Почему команда `go env` не отражает изменения в переменной окружения?
В моей системе переменная не установлена (пустое значение). Теперь, в отличие от некоторых других переменных GO env, это кажется неустановленным даже в выводе для команды. (я пользовательubuntu
, так~
является/home/ubuntu/
)
echo $GOBIN
//empty
echo $GOPATH
//empty
echo $GOROOT
//empty
go env GOBIN
//empty
go env GOPATH
/home/ubuntu/go
go env GOROOT
/usr/local/go
which go
/usr/local/go/bin/go
Почему дает значения, отличные от переменных системной среды? Я не смог найти никакой документации по этому поводу, но я предполагаю, что если переменные env не установлены на системном уровне, Golang устанавливает значения по умолчанию, которые показаны . Верно ли это предположение?
Почему не установлен? Я попытался явно установить системную переменную env, но это не отражается в
go env
, хотя системная переменная env, кажется, изменяется. Почему это так?
echo $GOBIN
//empty
go env GOBIN
//empty
go env GOPATH
/home/ubuntu/go
GOBIN=‘/home/ubuntu/go/bin’
echo $GOBIN
/home/ubuntu/go/bin
go env GOBIN
//empty
Официальная документация ( https://pkg.go.dev/cmd/go ) гласит:
Env выводит информацию о среде Go
но в нем не упоминается, откуда берутся указанные переменные.
Проблема X ( https://xyproblem.info/ )
Я пытаюсь установить Delve ( https://github.com/go-delve/delve ), и в моей системе есть две версии go (go1.10.1
и ), и я планирую использовать последний (к сожалению, не могу удалить первый)
go1.17.8 go install github.com/go-delve/delve/cmd/dlv@latest
создает новый каталог в/home/ubuntu
=>go
и добавляет сюда Delve. Ноdlv version
является непризнанным. Отgo help env
,GOBIN
это здесьgo install
должен установить двоичные файлы - в моем случае он не установлен, поэтому я предполагаю, что Golang устанавливает его вGOPATH
. Но даже тогда я ожидал, что двоичный файл будет распознан. Я также попытался добавить местоположение в свойPATH
, но и это не сработало.
- Должен ли я установить свой GOBIN на что-то конкретное перед установкой через
go1.17.8
? - Есть ли у моей системы 2 версии go (
which go
указывает на версию go1.10.1), в чем причина? (1.10.1 не поддерживает модули, но я пытался установить через go.17.8, поэтому решил, что это не проблема)