我正在尝试在golang中执行命令,该命令转到〜路径。
就像在终端中运行ls ~
。
最终,我想在〜/ TestDirectory上的特定目录中创建命令,例如git pull,mkdir等。
这就是我尝试过的:
out, _ := exec.Command("ls", "~").Output()
->输出为空,因此运行exec.Command("cd", "~")
不会转到〜目录。out, _ := exec.Command("ls", "../..").Output()
->输出结果比我当前目录高2个目录,但由于当前项目可能在任何地方,所以它不是这样做的方法此外,我尝试设置命令的当前目录,输出为nil。
cmd := exec.Command("cd")
cmd.Dir = "~"
cmd.Run()
答案 0 :(得分:2)
~
由外壳扩展(至少在POSIX系统上扩展到$HOME
;有关globbing和glob(7)的信息)。您可以使用os.GetEnv("HOME")
进行扩展
此外,我尝试设置命令的当前目录,输出为nil。
每个process都有自己的 working directory。但是exec.Command
正在运行一个 new 进程,因此在您的情况下,只有该进程(而不是您自己的进程)正在更改其工作目录。您想使用os.Chdir
来更改自己的进程的工作目录。