Bug fix: ? and ! were not full aliases for `help' and `shell' as implied in
the documentation; the cases `? foo' and `! foo' failed.
diff --git a/Lib/cmd.py b/Lib/cmd.py
index d0c7498..41b2293 100644
--- a/Lib/cmd.py
+++ b/Lib/cmd.py
@@ -90,15 +90,15 @@
 
     def onecmd(self, line):
         line = string.strip(line)
-        if line == '?':
-            line = 'help'
-        elif line == '!':
+        if not line:
+            return self.emptyline()
+        elif line[0] == '?':
+            line = 'help ' + line[1:]
+        elif line[0] == '!':
             if hasattr(self, 'do_shell'):
-                line = 'shell'
+                line = 'shell ' + line[1:]
             else:
                 return self.default(line)
-        elif not line:
-            return self.emptyline()
         self.lastcmd = line
         i, n = 0, len(line)
         while i < n and line[i] in self.identchars: i = i+1