
import os os.getenv("hello") 如上所示, 如果我在终端中使用 sudo python3 执行上面代码, 获取到的就是系统的环境变量. 我的有一个脚本是使用 root 权限启动的, 导致我获取到的环境变量是系统级别的环境变量, 那么我这边有没有什么 python 方法在 root 用户运行脚本的时候获取到这个"hello"的用户级别的环境变量呢, 各位大佬有方法么?
1 learningman 2021-04-20 21:49:47 +08:00 subprocess.popen su user && export 行不( |
2 ClericPy 2021-04-20 21:56:44 +08:00 |
3 18870715400 OP @learningman 你的这个方法好像不行, 我在终端执行直接进入 bash 命令行了. |
4 18870715400 OP @ClericPy 这边用的是 mac 系统 |
5 Jirajine 2021-04-20 22:00:06 +08:00 via Android 环境变量没有什么系统的、用户的之分,都是从父进程继承的。你用 root 启动获取到的就是 root 用户的环境变量。 你可以让 sudo 为你保留环境变量,或以普通用户启动以后再提权。 |
6 ungrown 2021-04-21 09:07:03 +08:00 变量如果隐私不敏感的话,可以先用非 root 用户权限跑个脚本把变量保存到配置文件 |
7 18870715400 OP 这边发现变量的值使用的是用用户名字直接拼接的, 这边就不用获取变量了. |
8 no1xsyzy 2021-04-21 13:34:31 +08:00 这显然是一个 X-Y 问题 sudo 会影响非常多的环境变量,试试 sudo env | diff <(env) /dev/fd/0 另外,用户名拼接实际上很可能也是误解。比如 $HOME 其实是从 /etc/passwd 读取的,只不过默认采用 /home/$USER 罢了。 |
9 arischow 2021-04-21 15:56:23 +08:00 在该项目中的 virtualenv 管理对应的环境变量 |
10 julyclyde 2021-05-08 16:38:51 +08:00 说白了这事和 python 没啥关系 |