用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脚本运行。

回答:

我不知道的东西,但两件事情,可以帮助您按照

  1. http://sourceforge.net/projects/pyshint/
  2. 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

回到顶部