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 关注
- 299 浏览
添加回答
举报