diff --git a/CHANGES b/CHANGES
index 5e3ff81bb20c3668d8e6fcb97cc17fcd093d8db6..279b88bc06a68dda246316c5690dde0aeb58278c 100644
--- a/CHANGES
+++ b/CHANGES
@@ -344,7 +344,9 @@ Miscellaneous
  * Modules.conf has a new option - "require" - that marks a module as critical for 
    the execution of Asterisk.
    If one of the required modules fail to load, Asterisk will exit with a return
-   code set to 2. 
+   code set to 2.
+ * An 'X' option has been added to the asterisk application which enables #exec support.
+   This allows #exec to be used in asterisk.conf.
 
 ------------------------------------------------------------------------------
 --- Functionality changes from Asterisk 1.6.1 to Asterisk 1.6.2  -------------
diff --git a/doc/asterisk.sgml b/doc/asterisk.sgml
index 655d33e8e70209ddd294d1e68f56ca0f6758bedf..31d96dd7373bacaf5aafb3aeaddbc64b7fd20b89 100644
--- a/doc/asterisk.sgml
+++ b/doc/asterisk.sgml
@@ -310,6 +310,16 @@
 			</para>
 		</listitem>
 	</varlistentry>
+	<varlistentry>
+		<term>-X</term>
+		<listitem>
+			<para>
+			Enables executing of includes via <command>#exec</command> directive.
+			This can be useful if You want to do <command>#exec</command> inside
+			<filename>asterisk.conf</filename>
+			</para>
+		</listitem>
+	</varlistentry>
 	</variablelist>
 </refsect1>
 <refsect1>
diff --git a/main/asterisk.c b/main/asterisk.c
index 4dee9da531b91ce72f3465e93cbf786afa17a686..f8f3fa4680f1aa75377b6e326e8cbc5928942b40 100644
--- a/main/asterisk.c
+++ b/main/asterisk.c
@@ -2777,6 +2777,7 @@ static int show_cli_help(void) {
 	printf("                   of output to the CLI\n");
 	printf("   -v              Increase verbosity (multiple v's = more verbose)\n");
 	printf("   -x <cmd>        Execute command <cmd> (only valid with -r)\n");
+	printf("   -X              Execute includes by default (allows #exec in asterisk.conf)\n");
 	printf("   -W              Adjust terminal colors to compensate for a light background\n");
 	printf("\n");
 	return 0;
@@ -3141,7 +3142,7 @@ int main(int argc, char *argv[])
 	if (getenv("HOME")) 
 		snprintf(filename, sizeof(filename), "%s/.asterisk_history", getenv("HOME"));
 	/* Check for options */
-	while ((c = getopt(argc, argv, "BC:cde:FfG:ghIiL:M:mnpqRrs:TtU:VvWx:")) != -1) {
+	while ((c = getopt(argc, argv, "BC:cde:FfG:ghIiL:M:mnpqRrs:TtU:VvWXx:")) != -1) {
 		/*!\note Please keep the ordering here to alphabetical, capital letters
 		 * first.  This will make it easier in the future to select unused
 		 * option flags for new features. */
@@ -3150,6 +3151,9 @@ int main(int argc, char *argv[])
 			ast_set_flag(&ast_options, AST_OPT_FLAG_FORCE_BLACK_BACKGROUND);
 			ast_clear_flag(&ast_options, AST_OPT_FLAG_LIGHT_BACKGROUND);
 			break;
+		case 'X':
+			ast_set_flag(&ast_options, AST_OPT_FLAG_EXEC_INCLUDES);
+			break;
 		case 'C':
 			ast_copy_string(cfg_paths.config_file, optarg, sizeof(cfg_paths.config_file));
 			ast_set_flag(&ast_options, AST_OPT_FLAG_OVERRIDE_CONFIG);