Python 3.x python os.environ[';SECRET#u NAME';]无法获取值";秘密“U值”;来自aws代码构建ecr容器

Python 3.x python os.environ[';SECRET#u NAME';]无法获取值";秘密“U值”;来自aws代码构建ecr容器,python-3.x,environment-variables,containers,aws-codebuild,Python 3.x,Environment Variables,Containers,Aws Codebuild,python如何获得所有os环境 我的python脚本无法在aws codebuild中运行Ubuntu16容器时获取所有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/loca

python如何获得所有os环境

我的python脚本无法在aws codebuild中运行Ubuntu16容器时获取所有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
这些是env变量的一部分,命令printenvgot:

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
.....

我尝试使用导出命令,但它不起作用

如果文件中有变量,比如
file.sh
,您可以尝试通过
导出。file.sh

或者您可以尝试更好地工作

我想知道这是否是基于您显示的环境变量使用sudo运行命令的结果


如果是这样,您是否尝试使用
sudo-E
运行它以将用户的环境传递给sudo正在运行的命令?

我找到了它!因为一些环境变量是安全的,所以python不能直接打印它们,但仍然使用它们

我们可以在bitbucket管道变量示例中看到它


这与python无关。Python枚举它继承的所有环境变量并不困难。运行python程序的方式与printenv命令之间存在差异。请更新您的问题以显示您如何运行每个程序。python env输出显示
SUDO_uuu
vars和printenv输出并不意味着您正在通过
SUDO
启动python程序,而不是printenv。我将getenv.py放在名为/Script的文件夹中,并运行python3 getenv.py和SUDO python3 getenv.py。但是,它不适用于相同的shell类型
printenv
python3 getenv.py
。它们应该显示相同的数据。你观察到了什么?请注意,默认情况下,
sudo
出于安全考虑会丢弃大多数环境变量。因此,如果在运行
sudopython3getenv.py
时没有看到预期的环境变量,这是预期的行为,与python无关。我明白了。你说得对,python没有问题。它无法打印处于安全状态但仍可使用的变量。