2 回答

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

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