首页 > 解决方案 > 转到〜(波浪号字符)目录路径

问题描述

我正在尝试在 golang 中执行一个命令,该命令转到 ~ 路径。就像ls ~在终端中运行一样。

最终,我想在特定目录中创建命令,该目录位于 ~/TestDirectory,例如 git pull、mkdir 等。

这是我尝试过的:

  1. out, _ := exec.Command("ls", "~").Output()-> 输出为空白,所以运行exec.Command("cd", "~")不会进入~目录。
  2. out, _ := exec.Command("ls", "../..").Output()-> 输出是我当前的 2 个目录,但它不是这样做的方法,因为当前项目可能在任何地方
  3. 另外,我尝试设置命令的当前目录,输出为零。

    cmd := exec.Command("cd")
    cmd.Dir = "~"
    cmd.Run()
    

标签: go

解决方案


~由您的 shell 扩展(至少在 POSIX 系统上扩展至您的$HOME;阅读有关globbingglob(7)的信息)。你可以os.Getenv("HOME")用来得到它的扩展

另外,我尝试设置命令的当前目录,输出为零。

每个进程都有自己的 工作目录。但是exec.Command正在运行一个进程,因此在您的情况下,只有该进程(不是您自己的)正在更改其工作目录。你想用来os.Chdir改变你自己进程的工作目录。


推荐阅读