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 1
环境变量没有什么系统的、用户的之分,都是从父进程继承的。你用 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 没啥关系
|