diff --git a/src/builtins/mod.rs b/src/builtins/mod.rs
index 2733f4109d76f7ccab43c4df6953695d9631bcbf..75f40259e9083fa295fa3273bb95df46246ad54f 100644
--- a/src/builtins/mod.rs
+++ b/src/builtins/mod.rs
@@ -22,7 +22,7 @@ use self::variables::{alias, drop_alias, drop_array, drop_variable};
 
 use fnv::FnvHashMap;
 use std::error::Error;
-use std::io::{self, Write};
+use std::io::{self, Write, BufWriter};
 
 use parser::QuoteTerminator;
 use shell::{self, FlowLogic, Shell, ShellHistory};
@@ -178,9 +178,40 @@ impl Builtin {
 // Definitions of simple builtins go here
 
 fn list_vars(_: &[&str], shell: &mut Shell) -> i32 {
+    let stdout = io::stdout();
+    let mut buffer = BufWriter::new(stdout.lock());
+
+    // Small function for formatting and append an array entry to a string buffer.
+    fn print_array<W: Write>(buffer: &mut W, key: &str, array: &[String]) {
+        let _ = buffer.write([key, " = [ "].concat().as_bytes());
+        if array.len() > 1 {
+            let mut vars = array.iter();
+            if let Some(ref var) = vars.next() {
+                let _ = buffer.write(["'", var, "', "].concat().as_bytes());
+                vars.for_each(|ref var| {
+                    let _ = buffer.write(["'", var, "' "].concat().as_bytes());
+                });
+            }
+            let _ = buffer.write(b"]\n");
+        } else {
+            let _ = buffer.write(["'", &array[0], "' ]\n"].concat().as_bytes());
+        }
+    }
+
+    // Write all the string variables to the buffer.
+    let _ = buffer.write(b"# String Variables\n");
     shell.variables.variables.iter().for_each(
-        |(key, val)| println!("{} = {}", key, val)
+        |(key, val)| {
+            let _ = buffer.write([key, " = ", val.as_str(), "\n"].concat().as_bytes());
+        }
     );
+
+    // Then immediately follow that with a list of array variables.
+    let _ = buffer.write(b"\n# Array Variables\n");
+    shell.variables.arrays.iter().for_each(
+        |(key, val)| print_array(&mut buffer, &key, &val)
+    );
+
     SUCCESS
 }