我想要的是一种机制,我在Bash-Terminal上输入的所有命令都由Python脚本包装。 Python脚本执行输入的命令,但它增加了一些额外的魔法(例如设置“动态”环境变量)。 这有可能吗?
我正在运行Ubuntu和Debian Squeezy。
补充说明:
我有一个动态更改的属性文件(某些脚本会随时更改它)。我需要该文件中的属性作为所有shell脚本中的环境变量。当然我可以从shell以某种方式解析属性文件,但我更喜欢使用面向对象的样式(尤其是写入),因为它可以用Python(和ConfigObject)完成。
因此,我想用Python脚本包装所有脚本(无需自己修改脚本),这些脚本处理这些属性到所有Shell脚本。 这是我目前的用例,但我可以想象,我会发现其他情况,我可以在以后扩展我的包装。
答案 0 :(得分:13)
将每个键入Bash Shell的命令包装的完美方法是更改.bashrc中的变量PROMPT_COMMAND
。例如,如果我想在每个命令之前做一些Python的东西,喜欢在我的问题中询问:
.bashrc中:
# ...
PROMPT_COMMAND="python mycoolscript.py; $PROMPT_COMMAND;"
export $PROMPT_COMMAND
# ...
现在在每个命令运行脚本mycoolscript.py
之前。
答案 1 :(得分:1)
使用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
答案 2 :(得分:0)
我不知道有什么可以帮助你关注的事情
答案 3 :(得分:-2)
没有直接的方法可以做到。 但你可以制作一个python脚本来模拟一个bash终端,你可以使用python中漂亮的“Subprocess”模块以你喜欢的方式执行commnands