diff --git a/karaf/shell/commands/src/main/java/org/apache/felix/karaf/shell/commands/HistoryAction.java b/karaf/shell/commands/src/main/java/org/apache/felix/karaf/shell/commands/HistoryAction.java
index 39e3110..ee5884b 100644
--- a/karaf/shell/commands/src/main/java/org/apache/felix/karaf/shell/commands/HistoryAction.java
+++ b/karaf/shell/commands/src/main/java/org/apache/felix/karaf/shell/commands/HistoryAction.java
@@ -16,8 +16,35 @@
  */
 package org.apache.felix.karaf.shell.commands;
 
+import java.util.List;
+
+import jline.History;
+import org.apache.felix.gogo.commands.Command;
+import org.apache.felix.karaf.shell.console.OsgiCommandSupport;
+import org.fusesource.jansi.Ansi;
+
 /**
- * TODO
+ * History command
  */
-public class HistoryAction {
+@Command(scope = "shell", name="history", description="Prints command history")
+public class HistoryAction extends OsgiCommandSupport {
+
+    @Override
+    protected Object doExecute() throws Exception {
+        History history = (History) session.get(".jline.history");
+        List<String> elements = history.getHistoryList();
+
+        int i = 0;
+        for (String element : elements) {
+            System.out.println(
+                    Ansi.ansi()
+                        .a("  ")
+                        .a(Ansi.Attribute.INTENSITY_BOLD).render("%3d", i).a(Ansi.Attribute.INTENSITY_BOLD_OFF)
+                        .a("  ")
+                        .a(element)
+                        .toString());
+            i++;
+        }
+        return null;
+    }
 }
diff --git a/karaf/shell/commands/src/main/resources/OSGI-INF/blueprint/shell-commands.xml b/karaf/shell/commands/src/main/resources/OSGI-INF/blueprint/shell-commands.xml
index 88aea17..ec7e7c1 100644
--- a/karaf/shell/commands/src/main/resources/OSGI-INF/blueprint/shell-commands.xml
+++ b/karaf/shell/commands/src/main/resources/OSGI-INF/blueprint/shell-commands.xml
@@ -35,11 +35,9 @@
         <command name="shell/grep">
             <action class="org.apache.felix.karaf.shell.commands.GrepAction"/>
         </command>
-        <!--
         <command name="shell/history">
             <action class="org.apache.felix.karaf.shell.commands.HistoryAction"/>
         </command>
-        -->
         <command name="shell/if">
             <action class="org.apache.felix.karaf.shell.commands.IfAction"/>
         </command>
diff --git a/karaf/shell/console/src/main/java/org/apache/felix/karaf/shell/console/jline/Console.java b/karaf/shell/console/src/main/java/org/apache/felix/karaf/shell/console/jline/Console.java
index 903c2f8..c8a7752 100644
--- a/karaf/shell/console/src/main/java/org/apache/felix/karaf/shell/console/jline/Console.java
+++ b/karaf/shell/console/src/main/java/org/apache/felix/karaf/shell/console/jline/Console.java
@@ -102,6 +102,7 @@
         File file = new File(System.getProperty("user.home"), ".karaf/karaf.history");
         file.getParentFile().mkdirs();
         reader.getHistory().setHistoryFile(file);
+        session.put(".jline.history", reader.getHistory());
         if (completer != null) {
             reader.addCompletor(
                 new CompleterAsCompletor(
