【发布时间】:2012-05-03 12:59:15
【问题描述】:
如何告别所有在 irb 会话中定义的常量、对象和类似的东西,以返回一个全新的状态? “in”是指不操纵子会话。
【问题讨论】:
-
退出并重新启动?
irb的重量还不足以担心重新启动它。
如何告别所有在 irb 会话中定义的常量、对象和类似的东西,以返回一个全新的状态? “in”是指不操纵子会话。
【问题讨论】:
irb 的重量还不足以担心重新启动它。
键入
exec($0)
在您的 irb 控制台会话中。
【讨论】:
exec $0 保存一个字符和你的 shift 键
exec __FILE__ 会更好,因为它也会重新加载使用 IRB 拉入的任何脚本:在 rails console 中提供 exec $0,您会明白我的意思。但是,这些命令不会保留在执行 irb(例如 irb --prompt simple)时传递的任何选项,并且它们都会在子会话中失败。
irbrc 添加了一个函数,该函数创建/破坏了我可以玩的隔离命名空间。
我正在使用 Fedora 16,exec $0 不适合我。但我找到了以下方法:
CTRL+L 或 system("clear") 或 system("reset")
【讨论】:
system("command") 实际上在子shell 中执行command。手册页告诉我们clear 将简单地“清除终端屏幕”。虽然reset 带来了更多的花里胡哨,但它仍然只产生了表面上的变化。在 IRB 会话中实例化的任何内容仍然存在于内存中。 Sunny J 的建议巧妙地执行了最初用于跳转到 IRB 的命令。但是,我有点困惑,为什么你会遇到麻烦。你在puts $0 看到了什么输出?