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

芜湖不芜
TA贡献1796条经验 获得超7个赞
如果您的 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
TA贡献1805条经验 获得超10个赞
它的行为正确:sudo
以不同的用户身份运行命令,root
的主目录是/root
. 因此,如果您sudo
以 root 身份运行程序,则当前用户的主目录为/root
. 如果你想要一个不同的目录,你应该接受它作为一个 CLI 参数,例如使用flag
package。
- 2 回答
- 0 关注
- 254 浏览
添加回答
举报
0/150
提交
取消