diff --git a/src/code/save.lisp b/src/code/save.lisp
index f06461f5350036585385012c66e2b7dee3348301..747ba99b79d705049de9cb112fa10434cb0abbb8 100644
--- a/src/code/save.lisp
+++ b/src/code/save.lisp
@@ -254,8 +254,7 @@
                        *compile-print* nil
                        *compile-progress* nil
                        *require-verbose* nil
-                       *gc-verbose* nil
-                       *herald-items* nil))
+                       *gc-verbose* nil))
 	       (when (and process-command-line
 			  (or (find-switch "help")
 			      (find-switch "-help")))
@@ -280,12 +279,15 @@
 			     :if-does-not-exist nil)
 		       (or (load "home:init" :if-does-not-exist nil)
 			   (load "home:.cmucl-init"
-				 :if-does-not-exist nil))))))
-	     (when process-command-line
-	       (ext::invoke-switch-demons *command-line-switches*
-					  *command-switch-demons*))
-	     (when print-herald
-	       (print-herald))))
+				 :if-does-not-exist nil)))))
+	       (when process-command-line
+		 (ext::invoke-switch-demons *command-line-switches*
+					    *command-switch-demons*))
+	       (when (and print-herald
+			  (not (and process-command-line
+				    (find-switch "quiet"))))
+		 ;; Don't print the herald if -quiet is given.
+		 (print-herald)))))
 	 (funcall init-function))
        (restart-lisp ()
 	 (unix:unix-exit