如何在go中更改当前目录

时间:2017-09-03 23:37:48

标签: go

Golang execute cd command for CMD不同,我只想使用golang运行cd directory_location并更改当前目录。

例如,

说我在〜/ goproject,我在终端中运行./main,我想在终端中的〜/ goproject2。

我试过

cmd := exec.Command("bash", "-c", "cd", "~/goproject2")
cmd.Run()

但这并没有真正改变当前目录。

2 个答案:

答案 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)
}