Experimental version writes the command to a file.
diff --git a/Lib/bdb.py b/Lib/bdb.py
index 36b0f18..693387b 100644
--- a/Lib/bdb.py
+++ b/Lib/bdb.py
@@ -6,6 +6,7 @@
 # and 'wdb', a window-oriented debugger.
 # And of course... you can roll your own!
 
+
 import sys
 
 BdbQuit = 'bdb.BdbQuit' # Exception to give up completely
@@ -220,9 +221,8 @@
 	# a debugger to debug a statement, given as a string.
 	
 	def run(self, cmd):
-		import __main__
-		dict = __main__.__dict__
-		self.runctx(cmd, dict, dict)
+		modname = self.writetempfile(cmd)
+		self.runctx('import ' + modname + '\n', {}, {})
 	
 	def runctx(self, cmd, globals, locals):
 		self.reset()
@@ -237,6 +237,18 @@
 			del sys.trace
 		# XXX What to do if the command finishes normally?
 
+	def writetempfile(self, cmd):
+		import os
+		modname = 'bdb' + `os.getpid()`
+		filename = '/tmp/' + modname + '.py'
+		f = open(filename, 'w')
+		f.write(cmd + '\n')
+		f.close()
+		import sys
+		if sys.modules.has_key(modname): del sys.modules[modname]
+		if '/tmp' not in sys.path: sys.path.insert(0, '/tmp')
+		return modname
+
 
 # -------------------- testing --------------------