--- do_command.c.orig	2008-06-04 15:46:55.130632100 +0100
+++ do_command.c	2008-06-04 15:47:02.943082100 +0100
@@ -261,6 +261,11 @@
 		 */
 		{
 			char	*shell = env_get("SHELL", e->envp);
+			char	*shellswitch;
+			if (env_get("SHELLSWITCH", e->envp) == NULL)
+				shellswitch = "-c";
+			else
+				shellswitch = env_get("SHELLSWITCH", e->envp);
 
 # if DEBUGGING
 			if (DebugFlags & DTEST) {
@@ -271,7 +276,8 @@
 				_exit(OK_EXIT);
 			}
 # endif /*DEBUGGING*/
-			execle(shell, shell, "-c", e->cmd, (char *)0, e->envp);
+
+                        execle(shell, shell, shellswitch, e->cmd, (char *)0, e->envp);
 			fprintf(stderr, "execl: couldn't exec `%s'\n", shell);
 			perror("execl");
 			_exit(ERROR_EXIT);
