与Golang execute cd command for CMD不同,我只想使用golang运行cd directory_location
并更改当前目录。
例如,
说我在〜/ goproject,我在终端中运行./main
,我想在终端中的〜/ goproject2。
我试过
cmd := exec.Command("bash", "-c", "cd", "~/goproject2")
cmd.Run()
但这并没有真正改变当前目录。
答案 0 :(得分:10)
你还没有弄清楚为什么要更改目录,没有上下文就很难回答。但通常如果您需要从特定目录运行命令,您可以将其指定为Command上的Dir属性,例如:
cmd := exec.Command("myCommand", "arg1", "arg2")
cmd.Dir = "/path/to/work/dir"
cmd.Run()
如果这不是您的意思,请澄清。
答案 1 :(得分:7)
你想要os.Chdir
。此函数将更改应用程序工作目录。如果您需要更改 shell工作目录,最好的办法是查看cd
的工作原理并从中恢复。
正如您所发现的,您无法使用cd
从应用程序内部更改当前目录,但使用os.Chdir
时无需使用它:)
使用示例:
home := os.Getenv("HOME")
err := os.Chdir(home+"/goproject2")
if err != nil {
panic(err)
}