diff --git a/Modules/main.c b/Modules/main.c
index df79ab5..83fd9dc 100644
--- a/Modules/main.c
+++ b/Modules/main.c
@@ -32,6 +32,7 @@
 /* Python interpreter main program */
 
 #include "Python.h"
+#include "osdefs.h"
 
 #ifdef HAVE_UNISTD_H
 #include <unistd.h>
@@ -41,6 +42,12 @@
 #include <fcntl.h>
 #endif
 
+#if defined(PYOS_OS2) || defined(MS_WINDOWS)
+#define PYTHONHOMEHELP "<prefix>\\lib"
+#else
+#define PYTHONHOMEHELP "<prefix>/python1.5"
+#endif
+
 /* Interface to getopt(): */
 extern int optind;
 extern char *optarg;
@@ -53,20 +60,21 @@
 
 /* Short usage message (with %s for argv0) */
 static char *usage_line =
-"usage: %s [-d] [-i] [-O] [-S] [-u] [-v] [-X] [-c cmd | file | -] [arg] ...\n";
+"usage: %s [-d] [-i] [-O] [-S] [-u] [-v] [-x] [-X] [-c cmd | file | -] [arg] ...\n";
 
 /* Long usage message, split into parts < 512 bytes */
-static char *usage_top = "\n\
+static char *usage_top = "\
 Options and arguments (and corresponding environment variables):\n\
 -d     : debug output from parser (also PYTHONDEBUG=x)\n\
 -i     : inspect interactively after running script, (also PYTHONINSPECT=x)\n\
          and force prompts, even if stdin does not appear to be a terminal.\n\
 -O     : optimize generated bytecode (a tad).\n\
 -S     : don't imply 'import site' on initialization\n\
+-u     : unbuffered binary stdout and stderr (also PYTHONUNBUFFERED=x)\n\
 ";
 static char *usage_mid = "\
--u     : unbuffered binary stdout and stderr (also PYTHONUNBUFFERED=x)\n\
 -v     : verbose (trace import statements) (also PYTHONVERBOSE=x)\n\
+-x     : skip first line of source, allowing use of non-Unix forms of #!cmd\n\
 -X     : disable class based built-in exceptions\n\
 -c cmd : program passed in as string (terminates option list)\n\
 file   : program read from script file\n\
@@ -74,13 +82,12 @@
 arg ...: arguments passed to program in sys.argv[1:]\n\
 ";
 static char *usage_bot = "\
-\n\
 Other environment variables:\n\
 PYTHONSTARTUP: file executed on interactive startup (no default)\n\
-PYTHONPATH   : colon-separated list of directories prefixed to the\n\
+PYTHONPATH   : '%c'-separated list of directories prefixed to the\n\
                default module search path.  The result is sys.path.\n\
-PYTHONHOME   : alternate <prefix> directory (or <prefix>:<exec_prefix>).\n\
-               The default module search path uses <prefix>/lib/python1.5.\n\
+PYTHONHOME   : alternate <prefix> directory (or <prefix>%c<exec_prefix>).\n\
+               The default module search path uses %s.\n\
 ";
 
 
@@ -99,6 +106,7 @@
 	char *p;
 	int inspect = 0;
 	int unbuffered = 0;
+	int skipfirstline = 0;
 	int stdin_is_interactive = 0;
 
 	orig_argc = argc;	/* For Py_GetArgcArgv() */
@@ -109,7 +117,7 @@
 	if ((p = getenv("PYTHONUNBUFFERED")) && *p != '\0')
 		unbuffered = 1;
 
-	while ((c = getopt(argc, argv, "c:diOSuvX")) != EOF) {
+	while ((c = getopt(argc, argv, "c:diOSuvxX")) != EOF) {
 		if (c == 'c') {
 			/* -c is the last option; following arguments
 			   that look like options are left for the
@@ -150,6 +158,10 @@
 			Py_VerboseFlag++;
 			break;
 
+		case 'x':
+			skipfirstline = 1;
+			break;
+
 		case 'X':
 			Py_UseClassExceptionsFlag = 0;
 			break;
@@ -160,7 +172,8 @@
 			fprintf(stderr, usage_line, argv[0]);
 			fprintf(stderr, usage_top);
 			fprintf(stderr, usage_mid);
-			fprintf(stderr, usage_bot);
+			fprintf(stderr, usage_bot,
+				DELIM, DELIM, PYTHONHOMEHELP);
 			exit(2);
 			/*NOTREACHED*/
 
@@ -177,6 +190,10 @@
 					argv[0], filename);
 				exit(2);
 			}
+			else if (skipfirstline) {
+				char line[256];
+				fgets(line, sizeof line, fp);
+			}
 		}
 	}
 
