diff --git a/shell/impala_shell.py b/shell/impala_shell.py
index 35af848..554ae26 100755
--- a/shell/impala_shell.py
+++ b/shell/impala_shell.py
@@ -147,6 +147,8 @@
   HISTORY_FILE_QUERY_DELIM = '_IMP_DELIM_'
   # Strings that are interpreted as True for some shell options.
   TRUE_STRINGS = ("true", "TRUE", "True", "1")
+  # List of quit commands
+  QUIT_COMMANDS = ("quit", "exit")
 
   VALID_SHELL_OPTIONS = {
     'LIVE_PROGRESS' : (lambda x: x in ImpalaShell.TRUE_STRINGS, "print_progress"),
@@ -580,6 +582,10 @@
         print_to_stderr("Failed to reconnect and close (try %i/%i): %s" % (
             cancel_try + 1, ImpalaShell.CANCELLATION_TRIES, err_msg))
 
+  def _is_quit_command(self, command):
+    # Do a case insensitive check
+    return command.lower() in ImpalaShell.QUIT_COMMANDS
+
   def set_prompt(self, db):
     self.prompt = ImpalaShell.PROMPT_FORMAT.format(
         host=self.impalad[0], port=self.impalad[1], db=db)
@@ -597,7 +603,8 @@
       # If cmdqueue is populated, then commands are executed from the cmdqueue, and user
       # input is ignored. Send an empty string as the user input just to be safe.
       return str()
-    if not self.imp_client.is_connected():
+    # There is no need to reconnect if we are quitting.
+    if not self.imp_client.is_connected() and not self._is_quit_command(args):
       print_to_stderr("Connection lost, reconnecting...")
       self._connect()
       self._validate_database(immediately=True)
diff --git a/tests/shell/test_shell_interactive.py b/tests/shell/test_shell_interactive.py
index 92e5ab2..65b85a7 100755
--- a/tests/shell/test_shell_interactive.py
+++ b/tests/shell/test_shell_interactive.py
@@ -238,6 +238,21 @@
                                           wait_until_connected=False)
     assert ImpalaShellClass.DISCONNECTED_PROMPT in result.stdout, result.stderr
 
+  def test_quit_no_reconnect(self, vector):
+    """Test that a disconnected shell does not try to reconnect if quitting"""
+    result = run_impala_shell_interactive(vector, 'quit;', shell_args=['-ifoo'],
+                                          wait_until_connected=False)
+    assert "reconnect" not in result.stderr
+
+    result = run_impala_shell_interactive(vector, 'exit;', shell_args=['-ifoo'],
+                                          wait_until_connected=False)
+    assert "reconnect" not in result.stderr
+
+    # Null case: This is not quitting, so it will result in an attempt to reconnect.
+    result = run_impala_shell_interactive(vector, 'show tables;', shell_args=['-ifoo'],
+                                          wait_until_connected=False)
+    assert "reconnect" in result.stderr
+
   def test_bash_cmd_timing(self, vector):
     """Test existence of time output in bash commands run from shell"""
     args = ["! ls;"]
