Don't poorly emulate the interactive interpreter, use
code.InteractiveConsole to do a much better job.
diff --git a/Lib/rexec.py b/Lib/rexec.py
index 623cc97..b45fc69 100644
--- a/Lib/rexec.py
+++ b/Lib/rexec.py
@@ -552,25 +552,15 @@
             print "%s: can't open file %s" % (sys.argv[0], `args[0]`)
             return 1
     if fp.isatty():
-        print "*** RESTRICTED *** Python", sys.version
-        print 'Type "help", "copyright", "credits" or "license" ' \
-              'for more information.'
-
-        while 1:
-            try:
-                try:
-                    s = raw_input('>>> ')
-                except EOFError:
-                    print
-                    break
-                if s and s[0] != '#':
-                    s = s + '\n'
-                    c = compile(s, '<stdin>', 'single')
-                    r.s_exec(c)
-            except SystemExit, n:
-                return n
-            except:
-                traceback.print_exc()
+        import code
+        interp = code.InteractiveConsole(r.modules['__main__'].__dict__)
+        try:
+            interp.interact(
+                "*** RESTRICTED *** Python %s on %s\n"
+                'Type "help", "copyright", "credits" or "license" '
+                "for more information." % (sys.version, sys.platform))
+        except SystemExit, n:
+            return n
     else:
         text = fp.read()
         fp.close()