自作コマンドが動かない
Go言語でコマンドを作る練習をしていました。
しかし、作ったコマンドが上手く実行されないため質問をしました。
コマンドファイルがあるフォルダまでのPATHを通し、コマンドファイルには755権限を付与しました。
その上で実行しても上手くコマンドが実行されませんでした。
環境はmacOS Big Sur 11.6のターミナルで、z-shellを使ってます。
やったこと
- main関数を実行する
main.go
ファイルを作成。 - main関数から呼ばれる
testsrc.go
ファイルを作成。 - コマンドファイル
test-command
を作成。go run main.go
を行う処理を記述。 - ファイルがあるディレクトリをモジュール化
- フォルダにPATHを通したり、コマンドファイルに755権限をつけたりする
ホームディレクトリの直下に下記の構成をしているフォルダを置いています。
ファイル構成とソースコード
ファイル構成(test-commandsフォルダ)
. ├── go.mod ├── main.go ├── test-command(コマンド実行ファイル) └── testsrc └── testsrc.go
test-command
#!/bin/zsh go run ~/test-commands/main.go
go.mod
module test-commands go 1.17
main.go
package main import "test-commands/testsrc" func main() { testsrc.Testsrc() }
testsrc.go
package testsrc import "fmt" func Testsrc() { fmt.Println("hello") }
結果
ターミナル上でホームディレクトリに移動して、test-command
を実行しました。
そうすると以下の表示が出てきます。
zsh
1makoto@MacBook ~ % test-command 2test-commands/main.go:3:8: package test-commands/testsrc is not in GOROOT (/usr/local/go/src/test-commands/testsrc)
カレントディレクトリをtest-commandsフォルダにし、test-command
を行うと問題は生じません。
zsh
1makoto@MacBook test-commands % test-command 2hello
ファイルの構成に問題がある考えていますが、調べても有効な解決策を見つけられなかったため質問をしました。
もし説明でわかりづらい部分があれば教えていただきたいです。
ご協力よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー