我有一个调用python脚本的shell脚本
#!/bin/bash
sudo python test.py
test.py正在访问一些环境变量
os.getenv('MYKEY')
从shell脚本调用python脚本时,我得到None
。但是,如果直接从shell执行test.py
,它可以正常工作。
请帮忙
答案 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'
。