Почему команда `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
  1. Почему дает значения, отличные от переменных системной среды? Я не смог найти никакой документации по этому поводу, но я предполагаю, что если переменные env не установлены на системном уровне, Golang устанавливает значения по умолчанию, которые показаны . Верно ли это предположение?

  2. Почему не установлен? Я попытался явно установить системную переменную 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, но и это не сработало.

  1. Должен ли я установить свой GOBIN на что-то конкретное перед установкой черезgo1.17.8?
  2. Есть ли у моей системы 2 версии go (which goуказывает на версию go1.10.1), в чем причина? (1.10.1 не поддерживает модули, но я пытался установить через go.17.8, поэтому решил, что это не проблема)

0 ответов

Другие вопросы по тегам