从shell脚本调用时访问python脚本中的环境变量与直接在shell中运行它不同

时间:2015-05-16 02:23:11

标签: python shell

我有一个调用python脚本的shell脚本

#!/bin/bash

sudo python test.py

test.py正在访问一些环境变量

os.getenv('MYKEY')

从shell脚本调用python脚本时,我得到None。但是,如果直接从shell执行test.py,它可以正常工作。

请帮忙

2 个答案:

答案 0 :(得分:1)

在调用shell脚本之前几乎肯定没有var player: Player = new Player(); var platformOne: PlatformOne = new PlatformOne(); var platformTwo: PlatformTwo = new PlatformTwo(); var hittingPlatform: Boolean = false; stage.addEventListener(Event.ENTER_FRAME, loopEvent); player.addEventListener(Event.ENTER_FRAME, playerCollision); function playerCollision(event: Event): void { if (player.hitTestObject(platformOne) || player.hitTestObject(platformTwo)) { hittingPlatform = true; } else { hittingPlatform = false; } } function loopEvent(event: Event): void { if (!hittingPlatform) { player.y -= 5; } else if (hittingPlatform) { player.y += 5; } } ,因此shell脚本实际上无权访问export MYKEY,因此python脚本也无法访问它。

答案 1 :(得分:1)

sudo默认情况下不保留环境变量。

请参阅how to keep environment variables when using sudo

以下是我为重现结果所做的工作。

$ export MYKEY=5
$ python test.py
5
$ sudo python test.py
None

如果您使用python test.py而不是sudo python test.py,那么您的shell脚本应该会得到相同的结果。如果您仍想使用sudo,则需要使用sudo -E bash -c 'python test.py'