我想在python中找到包含一些环境变量的bash脚本。我跟着另一个线程去做。但是,似乎其中一个变量是畸形的,可以在给定的片段中看到。在python中检测到格式不正确的环境变量
COLORTERM=gnome-terminal
mc=() { . /usr/share/mc/mc-wrapper.sh
}
_=/usr/bin/env
我使用下面的代码来设置当前环境。
import os
import pprint
import subprocess
command = ['bash', '-c', 'source init_env && env']
proc = subprocess.Popen(command, stdout = subprocess.PIPE)
for line in proc.stdout:
(key, _, value) = line.partition("=")
os.environ[key] = value
proc.communicate()
'
如果我改变了上面的代码有点像把一个条件:
for line in proc.stdout:
(key, _, value) = line.partition("=")
if not value:
continue
os.environ[key] = value
然后一切正常,但环境被破坏,因为缺少一个支架可以看出从括号出现在新行的环境变量的片段。由于这种腐败的,如果我运行一些其他的命令一样
os.system("ls -l")
它给了我下面的错误
sh: mc: line 1: syntax error: unexpected end of file
sh: error importing function definition for `mc'
可能是什么这个问题可能的解决方案?
非常感谢
这段代码从哪里来?如果在shell脚本中有语法错误,你不能修复shell脚本吗?但是这看起来像一个有效的shell函数,只能以不适合直接评估的形式打印。 – tripleee 2012-02-16 07:36:21
这不是畸形的,那是它的价值超过几行。换行符是允许的。你的'ls'调用会抛出错误,因为你在执行'os.environ [key] = value'语句时已经为“mc”函数分配了无效的主体。你想在这里完成什么? – hamstergene 2012-02-16 09:13:40
我只想让我的环境变量出现在python环境中。有没有其他方法可以做到这一点?或者我该如何处理跨越多行的环境变量的值? – Shahzad 2012-02-16 09:26:02