Ошибка "команда не найдена" после установки 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"