用Python脚本包装所有在Bash-Shell中输入的命令
我想要的是一种机制,我在Bash-Terminal上输入的所有命令都由Python脚本包装。 Python脚本执行输入的命令,但它增加了一些额外的魔术(例如设置“动态”环境变量)。 这是可能的吗?用Python脚本包装所有在Bash-Shell中输入的命令
我正在运行Ubuntu和Debian Squeezy。
附加说明:
我有一个属性,文件,该文件是动态变化的(某些脚本不改变它在任何时候)。我需要该文件中的属性作为所有shell脚本中的环境变量。当然,我可以从shell中以某种方式解析属性文件,但我更喜欢使用面向对象的风格(尤其是写作),因为它可以通过Python(和ConfigObject)完成。
因此,我想用该Python脚本包裹所有脚本(无需修改脚本本身),该脚本将这些属性处理为所有Shell脚本。 这是我目前的用例,但我可以想象,我会发现其他情况下,我可以在以后扩展我的包装。
回答:
将每一个键入到Bash Shell中的命令是在.bashrc中更改变量PROMPT_COMMAND
。例如,如果我想每一个命令前做一些Python的东西,尤其爱吃问我的问题:
的.bashrc:
# ... PROMPT_COMMAND="python mycoolscript.py; $PROMPT_COMMAND;"
export $PROMPT_COMMAND
# ...
现在每前指挥mycoolscript.py
脚本运行。
回答:
我不知道的东西,但两件事情,可以帮助您按照
- http://sourceforge.net/projects/pyshint/
- IPython的外壳有一些功能在iterpreter执行shell命令。
回答:
使用Bash的DEBUG
陷阱。让我知道你是否需要我详细说明。
编辑:
这里的各种事情的一个简单的例子,你可能能够做到:
$ cat prefix.py #!/usr/bin/env python
print "export prop1=foobar"
print "export prop2=bazinga"
$ cat propscript
#!/bin/bash
echo $prop1
echo $prop2
$ trap 'eval "$(prefix.py)"' DEBUG
$ ./propscript
foobar
bazinga
你应该知道的security risks of using eval
的。
回答:
没有直接的方法可以做到这一点。 但是你可以制作一个python脚本来模拟一个bash终端,你可以在python中使用漂亮的“Subprocess”模块以你喜欢的方式执行commnands
以上是 用Python脚本包装所有在Bash-Shell中输入的命令 的全部内容, 来源链接: utcz.com/qa/262018.html