Ошибка "команда не найдена" после установки go-eval

Я пытаюсь запустить Go в интерактивном режиме.

Я хочу использовать go-eval для этого, я следовал инструкциям README:

  • Я успешно запустил go get github.com/sbinet/go-eval/
  • Я запустил go-eval, что привело к -bash: go-eval: command not found

Еще немного информации:

  • echo $PATH возвращает: /usr/local/go/bin:...

  • echo $GOPATH возвращает: $HOME/golang

  • работа whereis go-eval не возвращает вывода

  • выполнение go install go-eval возвращает:

    can't load package: package go-eval: cannot find package "go-eval" in any of: /usr/local/go/src/go-eval (from $GOROOT) $HOME/golang/src/go-eval (from $GOPATH)

Ответ 1

Вам нужно добавить GOPATH/bin в PATH.

PATH="$GOPATH/bin:$PATH"

Обновление: Начиная с Go 1.8, по умолчанию GOPATH имеет значение $HOME/go если не установлено. Выше не будет работать, если GOPATH не установлен явно.

Чтобы установить оба, добавьте это в ваш .profile:

export GOPATH="$HOME/go"
PATH="$GOPATH/bin:$PATH"

Ответ 2

Является ли двоичный go-eval в $GOPATH/bin? Вы используете команду $GOPATH/bin/ в качестве рабочего каталога? Если нет, это, вероятно, проблема.

go get и go install устанавливает двоичные файлы go (если есть) в $GOPATH/bin

Отметьте $GOPATH/bin для двоичного кода go-eval. Если его там, попробуйте запустить его с $GOPATH/bin с помощью ./go-eval. Если это сработает, вы добры.

В будущем, если вы хотите запустить двоичные файлы go, найденные в $GOPATH/bin из любой точки вашей оболочки, добавьте следующее в свой .bashrc или профиль:

export PATH=$PATH:$GOPATH/bin

Затем перезапустите терминал или запустите . ~/.bashrc или . /etc/profile

При запуске go install go-eval я получаю:

невозможно загрузить пакет: пакет go-eval: не удается найти пакет "go-eval" в любом из:    /usr/local/go/src/go -eval (от $GOROOT)    $ HOME/golang/src/go-eval (от $GOPATH)

Вы получаете вышеуказанную ошибку, потому что go-eval не находится в $HOME/golang/src/go-eval. Запуск go get github.com/sbinet/go-eval/ загрузит источник в $GOPATH/src/github/sbinet/go-eval/. Если вы хотите запустить go install go-eval, вам нужно указать имя пакета, соответствующее его положению в иерархии каталогов, в $GOPATH/src.

например. go install github/sbinet/go-eval

Ответ 3

Я хотел бы добавить это в дополнение к ответам.

В качестве полезного совета вы всегда можете проверить свои команды командой , которая.

Например: , которые идут

Если команда не найдена, вы знаете, что у вас есть проблема PATH, с которой вам нужно обратиться в первую очередь.

Затем вы можете сосредоточиться на поиске команды с помощью команды find.

Например: find/-name "go" -print 2 > /dev/null

Первая косая черта - это каталог для запуска поиска, аргумент в -name - это команда, которую вы ищете, и -print получает хороший результат. 2 > /dev/null отправляет результаты каталогов, недоступных для neverland (null), так что вам не нужно видеть кучу ошибок.

Использование этого процесса поможет вам быстро найти соответствующую команду, а затем вы можете добавить ее в свою переменную env PATH, и она станет доступной, как указано в других ответах.

Ответ 4

Все вышеприведенные ответы говорят сами за себя. Помимо тех, что я хотел бы добавить, по умолчанию вы можете получить доступ только к тем командам из терминала без пути к двоичному файлу, чья папка bin добавлена в переменную окружения, будь то linux, mac или windows.

В противном случае вам нужно будет указать путь к папке bin этого программного обеспечения и двоичное имя. Например, в вашем случае <path_to_bin_folder>/go-eval.

Это самая распространенная причина, по которой вы не можете выполнить эту команду непосредственно из командной строки. Пожалуйста, запомните это и попробуйте, прежде чем искать ответы в Интернете, потому что это, скорее всего, решит вашу проблему. Все, что вам нужно знать, это путь установки.

Итак, напишите следующее в rc или файл profile для вашего терминала и сохраните, например, для zsh это ~/.zshrc, для bash это ~/.bash_profile или ~/.bash_rc.

export GOPATH="$HOME/go"
export PATH=$PATH:$GOPATH/bin

Теперь, хотя файл сохранен, но изменения не будут отражены сразу. Вы должны найти файл профиля, как указано выше. Для этого типа source ~/.zshrc. Теперь вы сможете запускать команду прямо из командной строки. Даже если проблема не устранена, попробуйте выйти из сеанса терминала и выйти из системы, а затем снова войти в нее.

Если вы хотите добавить путь к папке bin для других пакетов, вы можете добавить его в переменную среды $ PATH, используя : Так, например, если вы хотите добавить путь к двоичному файлу Java, а затем просто

export PATH=$PATH:$JAVA_HOME/bin

Также рекомендуется определить путь к корневой папке пакета в отдельной переменной среды (пример $GOPATH="$HOME/go"). В случае, если путь установки изменится в будущем, вам просто нужно обновить переменную среды, связанную с этим двоичным файлом (например, просто update, $ GOPATH = "newpath"), и ваша команда будет работать так же, как и ранее, поскольку изменение в $ GOPATH будет отражаться в $ PATH.

Ответ 5

Эта проблема возникла при использовании команды "export PATH =" ~/go/bin: $ PATH ".

Похоже, что ~ вызывал проблемы и переход на полный путь работал.

Вместо этого попробуйте что-то вроде этого, которое не будет использовать тильду:

export PATH="$HOME/go/bin:$PATH"