os.Chdir("/tmp") 在 Go 中运行异常

os.Chdir("/tmp") works abnormally in Go

我用的是 Macbook。 我尝试使用 os.Chdir("/tmp"),但结果是 /private/tmp。以下是我的代码:

package main

import (
  "fmt"
  "os"
)

func main() {
  s, _ := os.Getwd()
  fmt.Println(s)

  if err := os.Chdir("/tmp"); err != nil {
    panic(err)
  }
  s, _ = os.Getwd()
  fmt.Println(s)

}

输出为:

➜  test   go run main.go
/Users/willy/test
/private/tmp

为什么?

如本文中的 chown Apple thread

On OS X, /tmp is an alias for /private/tmp.

$ ls -ale / | grep -i tmp

lrwxr-xr-x@    1 root  wheel        11 Aug 30  2009 tmp -> private/tmp

$

golang syscall.Chdir() 将遵循该符号链接。
因此,最终路径预计在 Mac OS 平台上。