如何在go中更改当前目录

Jas*_*Kim 2 go

用于CMD的Golang执行cd命令不同,我只想真正cd directory_location使用golang 运行并更改当前目录.

所以,例如,

说我在〜/ goproject,我跑,./main在终端,我想在终端的〜/ goproject2.

我试过了

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

但这实际上并没有改变当前目录.

Swi*_*ftD 13

你还没有弄清楚为什么你要改变目录,没有上下文这很难回答.但通常如果您需要从特定目录运行命令,则可以将其指定为Command上的Dir属性,例如:

cmd := exec.Command("myCommand", "arg1", "arg2")
cmd.Dir = "/path/to/work/dir"
cmd.Run()
Run Code Online (Sandbox Code Playgroud)

如果这不是您的意思,请澄清.

  • 伙计,你已经成功了! (2认同)

Mil*_*sen 10

你想要的os.Chdir.此函数将更改应用程序工作目录.如果您需要更改shell工作目录,最好的办法是查找cd工作原理和工作原理.

正如您所发现的那样,您不能使用cd从应用程序内部更改当前目录,但os.Chdir不需要它可以工作:)

用法示例:

home, _ := os.UserHomeDir()
err := os.Chdir(filepath.Join(home, "goproject2"))
if err != nil {
    panic(err)
}
Run Code Online (Sandbox Code Playgroud)

  • 当然它不会改变终端位置.更改终端位置要复杂得多.你仍然不能使用`cd`,Go标准库中没有任何东西可以帮助你.你最好的办法是查看`cd`本身的源代码,然后从那里开始向后工作. (3认同)