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