diff --git a/shell/lash.c b/shell/lash.c
index ce1ce7f..781dfdb 100644
--- a/shell/lash.c
+++ b/shell/lash.c
@@ -157,8 +157,8 @@
 static char *cwd;
 static char *local_pending_command;
 static struct jobset job_list = { NULL, NULL };
-static int argc;
-static char **argv;
+static int global_argc;
+static char **global_argv;
 static llist_t *close_me_list;
 static int last_return_code;
 static int last_bg_pid;
@@ -810,16 +810,16 @@
 				var = itoa(getpid());
 				break;
 			case '#':
-				var = itoa(argc-1);
+				var = itoa(global_argc - 1);
 				break;
 			case '0':case '1':case '2':case '3':case '4':
 			case '5':case '6':case '7':case '8':case '9':
 				{
 					int ixx = *(dst+1)-48+1;
-					if (ixx >= argc) {
+					if (ixx >= global_argc) {
 						var = '\0';
 					} else {
-						var = argv[ixx];
+						var = global_argv[ixx];
 					}
 				}
 				break;
@@ -1492,12 +1492,13 @@
 #endif
 
 int lash_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
-int lash_main(int argc_l, char **argv_l)
+int lash_main(int argc, char **argv)
 {
 	unsigned opt;
 	FILE *input = stdin;
-	argc = argc_l;
-	argv = argv_l;
+
+	global_argc = argc;
+	global_argv = argv;
 
 #if ENABLE_FEATURE_EDITING
 	line_input_state = new_line_input_t(FOR_SHELL);
@@ -1510,7 +1511,7 @@
 	job_list.fg = NULL;
 	last_return_code = 1;
 
-	if (argv[0] && argv[0][0] == '-') {
+	if (global_argv[0] && global_argv[0][0] == '-') {
 		FILE *prof_input;
 		prof_input = fopen("/etc/profile", "r");
 		if (prof_input) {
@@ -1522,13 +1523,13 @@
 		}
 	}
 
-	opt = getopt32(argv_l, "+ic:", &local_pending_command);
+	opt = getopt32(argv, "+ic:", &local_pending_command);
 #define LASH_OPT_i (1<<0)
 #define LASH_OPT_c (1<<1)
 	if (opt & LASH_OPT_c) {
 		input = NULL;
 		optind++;
-		argv += optind;
+		global_argv += optind;
 	}
 	/* A shell is interactive if the `-i' flag was given, or if all of
 	 * the following conditions are met:
@@ -1537,7 +1538,7 @@
 	 *    standard input is a terminal
 	 *    standard output is a terminal
 	 *    Refer to Posix.2, the description of the `sh' utility. */
-	if (argv[optind] == NULL && input == stdin
+	if (global_argv[optind] == NULL && input == stdin
 	 && isatty(STDIN_FILENO) && isatty(STDOUT_FILENO)
 	) {
 		opt |= LASH_OPT_i;
@@ -1550,9 +1551,9 @@
 					"Enter 'help' for a list of built-in commands.\n\n",
 					bb_banner);
 		}
-	} else if (!local_pending_command && argv[optind]) {
+	} else if (!local_pending_command && global_argv[optind]) {
 		//printf( "optind=%d  argv[optind]='%s'\n", optind, argv[optind]);
-		input = xfopen(argv[optind], "r");
+		input = xfopen(global_argv[optind], "r");
 		/* be lazy, never mark this closed */
 		llist_add_to(&close_me_list, (void *)(long)fileno(input));
 	}
