【发布时间】:2019-08-03 16:56:43
【问题描述】:
python如何获取所有的os env?
我的 python 脚本无法在 aws codebuild 中运行 ubuntu 16 容器中获取所有 env 变量
for item, value in os.environ.items():
print('{}: {}'.format(item, value))
这些是python脚本得到的环境变量:
SUDO_UID: 0
USER: root
HOME: /root
SUDO_USER: root
PATH:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
SUDO_COMMAND: /usr/bin/python3 get-env.py
SHELL: /bin/bash
USERNAME: root
TERM: xterm
LANG: C.UTF-8
HOSTNAME: 53f187197b9e
LC_ALL: C.UTF-8
MAIL: /var/mail/root
LOGNAME: root
这些是命令 printenv 得到的环境变量的一部分:
MAVEN_OPTS=-Dmaven.wagon.httpconnectionManager.maxPerRoute=2
CODEBUILD_LAST_EXIT=0
CODEBUILD_START_TIME=1552450745205
CODEBUILD_AGENT_ENDPOINT=http://127.0.0.1:7831
HOSTNAME=53f187197b9e
SHLVL=1
HOME=/root
AWS_EXECUTION_ENV=AWS_ECS_EC2
FPM_MAX_CHILDREN=32
NGINX_LOG_PATH=/var/log/nginx
COMPOSER_HOME=/root/composer
VERSION=0.7.0
COMPOSER_ALLOW_SUPERUSER=1
TERM=xterm
FPM_MAX_REQUEST=1024
.....
我尝试使用export命令,但没有成功
【问题讨论】:
-
这与python无关。 Python 可以轻松枚举它继承的所有环境变量。你运行 python 程序的方式和 printenv 命令是有区别的。请更新您的问题以显示您如何运行每个程序。您的 python env 输出显示
SUDO_vars 和 printenv 输出的事实并不意味着您正在通过sudo启动 python 程序,而不是 printenv。 -
我将 getenv.py 放在名为 /Script 的文件夹中,并同时运行 python3 getenv.py 和 sudo python3 getenv.py。但是,它对两者都不起作用
-
在同一个 shell 中输入
printenv然后python3 getenv.py。它们应该显示相同的数据。你观察什么?请注意,sudo默认情况下会丢弃大多数环境变量以确保安全。因此,如果您在运行sudo python3 getenv.py时没有看到预期的环境变量,这是预期的行为,与 python 无关。 -
我明白了。你是对的,python没有问题。它无法打印安全但仍然可以使用它们的变量。
标签: python-3.x environment-variables containers aws-codebuild