目录

go运行目录

获取运行目录和工作目录

二进制hello文件所在文件为/a/b/c/hello 如果在目录/c/d/e目录下执行文件hello

/a/b/c/hello f.txt
fmt.Println(getCurrentAbPathByExecutable())

// 获取当前执行程序所在的绝对路径
func getCurrentAbPathByExecutable() string {
	exePath, err := os.Executable()
	if err != nil {
		log.Fatal(err)
	}
	res, _ := filepath.EvalSymlinks(filepath.Dir(exePath))
	return res
}

上面的代码会打印/a/b/c/hello

getwd, err := os.Getwd()
fmt.Println(getwd, err)

abs, err := filepath.Abs(os.Args[1])
fmt.Println(abs, err)

os.Getwd()和命令行中pwd命令效果一样,返回当前工作目录,此时对应的是/c/d/e。

os.Args[1]是f.txt,filepath.Abs方法会自动判断f.txt是相对目录,就会加上/c/d/e,所以会打印/c/d/e/f.txt