You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

sudo运行Python脚本时如何获取普通用户的home目录?

解决方案

方案1:通过sudo保留的UID获取(最可靠,通用场景)

sudo执行命令时会自动注入SUDO_UID环境变量,记录触发sudo命令的原普通用户ID,配合Python标准库pwd模块即可直接查询到对应用户的家目录:

import os
import pwd

def get_normal_user_home():
    # 判定当前是否为sudo运行场景
    if "SUDO_UID" in os.environ:
        original_uid = int(os.environ["SUDO_UID"])
        # 根据UID查询用户完整信息
        user_pwd_info = pwd.getpwuid(original_uid)
        return user_pwd_info.pw_dir
    # 非sudo场景直接返回当前用户家目录
    return os.path.expanduser("~")

该方法不受用户数量限制,就算后续新增普通用户也能正常返回调用sudo的对应用户家目录。

方案2:单用户环境快速实现

你当前环境仅有一个普通用户,也可以直接读取/home目录下的用户目录获取路径,仅适合临时使用:

import os
# 遍历/home目录取第一个非隐藏文件夹作为普通用户家目录
normal_user_home = f"/home/{next(d for d in os.listdir('/home') if not d.startswith('.'))}"

注意事项

不要直接使用os.path.expanduser("~")或pathlib.Path.home()获取家目录,sudo运行时这两个方法都会默认返回root用户的家目录/root,不符合需求。

内容的提问来源于stack exchange,提问作者sakthivel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 12:06:05