go install したコマンドが「command not found」で実行できない
go install はバイナリを GOBIN(既定は $GOPATH/bin か $HOME/go/bin)に置く。
その場所が PATH に無いと実行できないため、インストール先を確認して PATH に追加すれば解決する。
公開: 更新:
要約
go install example.com/cmd/tool@latest が成功しても tool が command not found になるのは、インストール先のディレクトリが PATH に入っていないためです。
go install はビルドしたバイナリを GOBIN(既定では $GOPATH/bin、GOPATH 未設定なら $HOME/go/bin)へ置きます。
まずその場所を確認します。
実行例
公式イメージ golang:1.23 で go install . は成功するのに hello は not found(終了コード 127)になり、実行ファイルは go env GOPATH が示す /go の bin に置かれていたので、そこを PATH に足すと動いた。
続けて /go/bin の hello を消し、GOBIN を $HOME/bin に変えて入れ直すと置き場所は /root/bin に移り、PATH に足すまでは再び終了コード 127、足した後は command -v hello が /root/bin/hello を指して実行できている。
$ go install .$ hello
sh: 1: /recipe.sh: hello: not found
終了コード: 127$ go env GOPATH GOBIN
/go$ ls "$(go env GOPATH)/bin"
hello$ echo $PATH
/usr/local/go/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin$ export PATH=$PATH:$(go env GOPATH)/bin$ hello
hello from the installed binary
終了コード: 0$ rm "$(go env GOPATH)/bin/hello"$ go env -w GOBIN=$HOME/bin$ go install .$ go env GOPATH GOBIN
/go
/root/bin$ ls "$(go env GOBIN)"
hello$ hello
sh: 1: /recipe.sh: hello: not found
終了コード: 127$ export PATH=$PATH:$HOME/bin$ command -v hello
/root/bin/hello$ hello
hello from the installed binary
終了コード: 0— 2026-09-25 時点の出力
検証環境
- 検証日
- 実行環境
golang:1.23Debian GNU/Linux 12 (bookworm)- バージョン
- Python 3.11.2
- Git 2.39.5
- Go 1.23.12
この記事の「実行例」は、上記の環境で実際にコマンドを実行して得られた出力をそのまま掲載しています。 再現手順はリポジトリの検証スクリプトとして管理し、定期的に再実行して出力を更新しています。
よくある原因
- bin が PATH に無い:
$(go env GOPATH)/binが PATH に含まれていない。 - GOBIN の変更:
GOBINを独自に設定したが、その場所を PATH に追加していない。 - GOPATH 未設定: 既定の
$HOME/go/binに置かれていることを見落としている。 - 再読み込み漏れ: 設定ファイルに追記したのにシェルへ反映していない。
解決策
1. インストール先を確認する
まず実際の置き場所を調べます。
go env GOPATH GOBINGOBIN が空なら $GOPATH/bin(多くは $HOME/go/bin)が置き場所です。
2. PATH に追加する
シェルの設定ファイルへ追記します。
echo 'export PATH=$PATH:$(go env GOPATH)/bin' >> ~/.zshrc
source ~/.zshrc3. GOBIN を使う場合
置き場所を固定したいときは GOBIN を設定し、その場所も PATH に通します。
go env -w GOBIN=$HOME/bin
export PATH=$PATH:$HOME/bin設定後にシェルを開き直すと、go install したコマンドがどこからでも実行できます。