2 回答

TA貢獻1803條經驗 獲得超3個贊
您以錯誤的方式調用命令。第一個字符串是可執行文件的完整路徑
os.exec.Command:func Command(name string, arg ...string)
所以你要 exec.Command("/usr/bin/go", "run", title+".go")

TA貢獻1799條經驗 獲得超6個贊
接受的答案指出os.exec.Command的第一個參數是可執行文件的完整路徑。從文檔:
“如果名稱不包含路徑分隔符,如果可能,Command 使用 LookPath將路徑解析為完整名稱。否則直接使用名稱”。
executable file not found in $PATH除了像之前建議的那樣在可執行文件名稱之后傳遞參數之外,您還應該做些什么來避免錯誤,那PATH就是在您的 SHELL 中或使用os.Setenv設置您的參數。如果您對命令的完整位置進行硬編碼,則您的程序可能無法移植到另一個 Unix 操作系統。
例如,該命令lspci位于下/usr/bin在Ubuntu和下/sbin/在RHEL。如果你這樣做:
os.Setenv("PATH", "/usr/bin:/sbin")
exec.Command("lspci", "-mm")
然后你的程序將在 ubuntu 和 RHEL 中執行。
或者,形成外殼,您還可以執行以下操作: PATH=/sbin; my_program
注意:上述命令僅限PATH于明確指示的路徑。例如,如果要添加到 shell 中的現有路徑,請執行PATH=/sbin:$PATH; my_program; 在 go 中,您可能可以使用 讀取變量,os.Getenv然后在執行os.Setenv.
- 2 回答
- 0 關注
- 375 瀏覽
添加回答
舉報