diff --git a/README b/README
index dee0e674a18c007fa98393db9a7d3b0a70e8a42b..2c776876e236737f54e3e9b5b72acde4d6938aea 100644
--- a/README
+++ b/README
@@ -620,6 +620,7 @@ The following options need to be configured:
 		CONFIG_CMD_DS4510_RST	* ds4510 I2C rst command
 		CONFIG_CMD_DTT		* Digital Therm and Thermostat
 		CONFIG_CMD_ECHO		  echo arguments
+		CONFIG_CMD_EDITENV	  edit env variable
 		CONFIG_CMD_EEPROM	* EEPROM read/write support
 		CONFIG_CMD_ELF		* bootelf, bootvx
 		CONFIG_CMD_SAVEENV	  saveenv
diff --git a/common/cmd_nvedit.c b/common/cmd_nvedit.c
index 725e573ddf85ce8b6e09b836d9469d198407409a..eb89e9e60a669464f9d7ed669e0b5c047647931f 100644
--- a/common/cmd_nvedit.c
+++ b/common/cmd_nvedit.c
@@ -42,6 +42,9 @@
 #include <common.h>
 #include <command.h>
 #include <environment.h>
+#if defined(CONFIG_CMD_EDITENV)
+#include <malloc.h>
+#endif
 #include <watchdog.h>
 #include <serial.h>
 #include <linux/stddef.h>
@@ -502,6 +505,34 @@ int do_askenv ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 }
 #endif
 
+/************************************************************************
+ * Interactively edit an environment variable
+ */
+#if defined(CONFIG_CMD_EDITENV)
+int do_editenv(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+{
+	char buffer[CONFIG_SYS_CBSIZE];
+	char *init_val;
+	int len;
+
+	if (argc < 2) {
+		cmd_usage(cmdtp);
+		return 1;
+	}
+
+	/* Set read buffer to initial value or empty sting */
+	init_val = getenv(argv[1]);
+	if (init_val)
+		len = sprintf(buffer, "%s", init_val);
+	else
+		buffer[0] = '\0';
+
+	readline_into_buffer("edit: ", buffer);
+
+	return setenv(argv[1], buffer);
+}
+#endif /* CONFIG_CMD_EDITENV */
+
 /************************************************************************
  * Look up variable from environment,
  * return address of storage for that variable,
@@ -597,6 +628,15 @@ int envmatch (uchar *s1, int i2)
 
 /**************************************************/
 
+#if defined(CONFIG_CMD_EDITENV)
+U_BOOT_CMD(
+	editenv, 2, 0,	do_editenv,
+	"edit environment variable",
+	"name\n"
+	"    - edit environment variable 'name'"
+);
+#endif
+
 U_BOOT_CMD(
 	printenv, CONFIG_SYS_MAXARGS, 1,	do_printenv,
 	"print environment variables",
diff --git a/include/config_cmd_all.h b/include/config_cmd_all.h
index c747b4baa193e60c74eb7b0f4a7051378b2febb7..058fdf14fae47e57174aa655d529b7c5614b8cd9 100644
--- a/include/config_cmd_all.h
+++ b/include/config_cmd_all.h
@@ -30,6 +30,7 @@
 #define CONFIG_CMD_DOC		/* Disk-On-Chip Support		*/
 #define CONFIG_CMD_DTT		/* Digital Therm and Thermostat */
 #define CONFIG_CMD_ECHO		/* echo arguments		*/
+#define CONFIG_CMD_EDITENV	/* editenv			*/
 #define CONFIG_CMD_EEPROM	/* EEPROM read/write support	*/
 #define CONFIG_CMD_ELF		/* ELF (VxWorks) load/boot cmd	*/
 #define CONFIG_CMD_SAVEENV	/* saveenv			*/
diff --git a/include/config_cmd_default.h b/include/config_cmd_default.h
index a5d87a68e8bd5cfce2af9846af35cd6369f1737f..6e3903c4d4166951da385d689e4b4cb8014d5a59 100644
--- a/include/config_cmd_default.h
+++ b/include/config_cmd_default.h
@@ -20,6 +20,7 @@
 #define CONFIG_CMD_BOOTD	/* bootd			*/
 #define CONFIG_CMD_CONSOLE	/* coninfo			*/
 #define CONFIG_CMD_ECHO		/* echo arguments		*/
+#define CONFIG_CMD_EDITENV	/* editenv			*/
 #define CONFIG_CMD_FPGA		/* FPGA configuration Support	*/
 #define CONFIG_CMD_IMI		/* iminfo			*/
 #define CONFIG_CMD_ITEST	/* Integer (and string) test	*/