diff --git a/runtime/doc/terminal.txt b/runtime/doc/terminal.txt
index db126de..7b40bf2 100644
--- a/runtime/doc/terminal.txt
+++ b/runtime/doc/terminal.txt
@@ -210,6 +210,10 @@
 					no window will be used.
 			++norestore	Do not include this terminal window
 					in a session file.
+			++shell		Instead of executing {command}
+					directly, use a shell, like with
+					`:!command` 		*E279*
+					{only works on Unix currently}
 			++kill={how}	When trying to close the terminal
 					window kill the job with {how}.  See
 					|term_setkill()| for the values.
diff --git a/src/os_unix.c b/src/os_unix.c
index e8fe90a..6fa0702 100644
--- a/src/os_unix.c
+++ b/src/os_unix.c
@@ -4299,10 +4299,10 @@
 # endif
 }
 
-#if !defined(USE_SYSTEM) || (defined(FEAT_GUI) && defined(FEAT_TERMINAL))
+#if !defined(USE_SYSTEM) || defined(FEAT_TERMINAL) || defined(PROTO)
 
-    static int
-build_argv(
+    int
+unix_build_argv(
 	char_u *cmd,
 	char ***argvp,
 	char_u **sh_tofree,
@@ -4369,7 +4369,7 @@
     aco_save_T	aco;
     oparg_T	oa;		/* operator arguments */
 
-    if (build_argv(cmd, &argv, &tofree1, &tofree2) == FAIL)
+    if (unix_build_argv(cmd, &argv, &tofree1, &tofree2) == FAIL)
 	goto theend;
 
     init_job_options(&opt);
@@ -4546,7 +4546,7 @@
     if (options & SHELL_COOKED)
 	settmode(TMODE_COOK);		/* set to normal mode */
 
-    if (build_argv(cmd, &argv, &tofree1, &tofree2) == FAIL)
+    if (unix_build_argv(cmd, &argv, &tofree1, &tofree2) == FAIL)
 	goto error;
 
     /*
diff --git a/src/proto/os_unix.pro b/src/proto/os_unix.pro
index 86e12a0..14cde4a 100644
--- a/src/proto/os_unix.pro
+++ b/src/proto/os_unix.pro
@@ -59,6 +59,7 @@
 int mch_report_winsize(int fd, int rows, int cols);
 void mch_set_shellsize(void);
 void mch_new_shellsize(void);
+int unix_build_argv(char_u *cmd, char ***argvp, char_u **sh_tofree, char_u **shcf_tofree);
 int mch_call_shell(char_u *cmd, int options);
 void mch_job_start(char **argv, job_T *job, jobopt_T *options, int is_terminal);
 char *mch_job_status(job_T *job);
diff --git a/src/terminal.c b/src/terminal.c
index 10343fe..290d7c7 100644
--- a/src/terminal.c
+++ b/src/terminal.c
@@ -703,6 +703,7 @@
 {
     typval_T	argvar[2];
     jobopt_T	opt;
+    int		opt_shell = FALSE;
     char_u	*cmd;
     char_u	*tofree = NULL;
 
@@ -738,6 +739,8 @@
 	    opt.jo_hidden = 1;
 	else if (OPTARG_HAS("norestore"))
 	    opt.jo_term_norestore = 1;
+	else if (OPTARG_HAS("shell"))
+	    opt_shell = TRUE;
 	else if (OPTARG_HAS("kill") && ep != NULL)
 	{
 	    opt.jo_set2 |= JO2_TERM_KILL;
@@ -831,10 +834,30 @@
 	opt.jo_in_bot = eap->line2;
     }
 
-    argvar[0].v_type = VAR_STRING;
-    argvar[0].vval.v_string = cmd;
-    argvar[1].v_type = VAR_UNKNOWN;
-    term_start(argvar, NULL, &opt, eap->forceit ? TERM_START_FORCEIT : 0);
+    if (opt_shell && tofree == NULL)
+    {
+#ifdef UNIX
+	char	**argv = NULL;
+	char_u	*tofree1 = NULL;
+	char_u	*tofree2 = NULL;
+
+	// :term ++shell command
+	if (unix_build_argv(cmd, &argv, &tofree1, &tofree2) == OK)
+	    term_start(NULL, argv, &opt, eap->forceit ? TERM_START_FORCEIT : 0);
+	vim_free(tofree1);
+	vim_free(tofree2);
+#else
+	emsg(_("E279: Sorry, ++shell is not supported on this system"));
+#endif
+    }
+    else
+    {
+	argvar[0].v_type = VAR_STRING;
+	argvar[0].vval.v_string = cmd;
+	argvar[1].v_type = VAR_UNKNOWN;
+	term_start(argvar, NULL, &opt, eap->forceit ? TERM_START_FORCEIT : 0);
+    }
+
     vim_free(tofree);
 
 theend:
@@ -6474,7 +6497,7 @@
 term_and_job_init(
 	term_T	    *term,
 	typval_T    *argvar,
-	char	    **argv UNUSED,
+	char	    **argv,
 	jobopt_T    *opt,
 	jobopt_T    *orig_opt)
 {
diff --git a/src/testdir/test_terminal.vim b/src/testdir/test_terminal.vim
index 9aae680..1a126b9 100644
--- a/src/testdir/test_terminal.vim
+++ b/src/testdir/test_terminal.vim
@@ -2214,6 +2214,18 @@
   call delete('Xtext')
 endfunc
 
+func Test_terminal_shell_option()
+  CheckUnix
+  " exec is a shell builtin command, should fail without a shell.
+  term exec ls runtest.vim
+  call WaitForAssert({-> assert_match('job failed', term_getline(bufnr(), 1))})
+  bwipe!
+
+  term ++shell exec ls runtest.vim
+  call WaitForAssert({-> assert_match('runtest.vim', term_getline(bufnr(), 1))})
+  bwipe!
+endfunc
+
 func Test_terminal_setapi_and_call()
   if !CanRunVimInTerminal()
     return
diff --git a/src/version.c b/src/version.c
index 5a4a1e4..767cbec 100644
--- a/src/version.c
+++ b/src/version.c
@@ -742,6 +742,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2251,
+/**/
     2250,
 /**/
     2249,
