我在http://JonathansCorner.com/cjsh有一个实验shell,其中包括减少查找埋藏在heirarchies中的文件的时间,以及[不完美]允许无限制的Python自定义方式,EMACS允许无限制的Lisp自定义。
我首先重构它以删除限制用户设置变量的函数,这些函数会比exec()更长,然后在其他函数中重构,以便为猴子修补提供钩子。
我已成功定义和调用新函数,除了最明显的修补shell之一的方法之外,我已经成功地修补了其他区域,以覆盖提示用户输入的功能,以便用户可以有一个自定义的提示。这个函数是use_main_prompt(),除了可自定义的行为之外,我从来没有重写过它。
如果你想使用CJSH shell,那么enduser语法是缩进的行是Python行,而未缩进的行是shell行。
我在http://JonathansCorner.com/cjsh/download.cgi中有什么可以防止重新接通电话的事吗?我有什么可说的吗“请从头开始查看,好吗?”
答案 0 :(得分:0)
Monkey修补功能会导致原始上下文中的范围发生更改。要对此进行测试,请尝试创建两个不同的文件并对其进行修补:
something.py
:
def patchable_function():
return "I have not been patched yet"
def another_function():
return patchable_function()
else.py
import something
from something import another_function
print another_function() # "I have not been patched yet"
something.patchable_function = lambda : "I AM PATCHED!"
print another_function() # "I AM PATCHED!"