为了账号安全,请及时绑定邮箱和手机立即绑定

os.UserHomeDir() 与 sudo 返回 /root

os.UserHomeDir() 与 sudo 返回 /root

Go
狐的传说 2022-06-27 15:39:19
我正在运行一个 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)


查看完整回答
反对 回复 2022-06-27
?
holdtom

TA贡献1805条经验 获得超10个赞

它的行为正确:sudo以不同的用户身份运行命令,root的主目录是/root. 因此,如果您sudo以 root 身份运行程序,则当前用户的主目录为/root. 如果你想要一个不同的目录,你应该接受它作为一个 CLI 参数,例如使用flagpackage



查看完整回答
反对 回复 2022-06-27
  • 2 回答
  • 0 关注
  • 254 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号