os.UserHomeDir() 与 sudo 返回 /root

我正在运行一个 CLI 应用程序,并使用os.UserHomeDirfunc 保存一些文件,它返回如下内容:/home/victor/.rit,但是当我使用 sudo 运行命令时,它返回:/root/.rit/,我想获得相同的地址,无论是否使用 sudo,都有一种方法来做到这一点?



狐的传说
浏览 255回答 2
2回答

芜湖不芜

如果您的 Go 程序必须使用 运行sudo,您可以通过以下方式在 sudo 之前找出原始用户身份:username := os.Getenv("SUDO_USER")然后您可以查找他们的用户信息:import "os/user"u, err := user.Lookup(username)if err != nil {    log.Fatal(err)}fmt.Println("user home:", u.HomeDir)

holdtom

它的行为正确:sudo以不同的用户身份运行命令,root的主目录是/root. 因此,如果您sudo以 root 身份运行程序,则当前用户的主目录为/root. 如果你想要一个不同的目录,你应该接受它作为一个 CLI 参数,例如使用flagpackage。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go