diff --git a/src/lib/shell/binary/mod.rs b/src/lib/shell/binary/mod.rs
index 67dec0f93c1b16db456b4a6ceba3ee88c8d80391..7faba21a811d48ca5d98eb7946411dc408552b08 100644
--- a/src/lib/shell/binary/mod.rs
+++ b/src/lib/shell/binary/mod.rs
@@ -91,13 +91,9 @@ impl Binary for Shell {
         self.evaluate_init_file();
 
         loop {
-            let mut lines = itertools::repeat_call(|| {
-                let line = self.readln();
-                self.flags |= UNTERMINATED;
-                line
-            })
-            .filter_map(|cmd| cmd)
-            .flat_map(|s| s.into_bytes().into_iter().chain(Some(b'\n')));
+            let mut lines = itertools::repeat_call(|| self.readln())
+                .filter_map(|cmd| cmd)
+                .flat_map(|s| s.into_bytes().into_iter().chain(Some(b'\n')));
             match Terminator::new(&mut lines).terminate().ok() {
                 Some(command) => {
                     self.flags &= !UNTERMINATED;
diff --git a/src/lib/shell/binary/readln.rs b/src/lib/shell/binary/readln.rs
index 48cebc6a7d1f9e7044ca8d02327d42f100684a33..e1739627baae77fadea97ea3704d71f12974f1d3 100644
--- a/src/lib/shell/binary/readln.rs
+++ b/src/lib/shell/binary/readln.rs
@@ -1,4 +1,4 @@
-use super::super::{completer::*, Binary, DirectoryStack, Shell, Variables};
+use super::super::{completer::*, flags, Binary, DirectoryStack, Shell, Variables};
 use crate::{sys, types};
 use liner::{BasicCompleter, CursorPosition, Event, EventKind};
 use std::{env, io::ErrorKind, mem, path::PathBuf};
@@ -110,7 +110,10 @@ pub(crate) fn readln(shell: &mut Shell) -> Option<String> {
     );
 
     match line {
-        Ok(line) => Some(line),
+        Ok(line) => {
+            shell.flags |= flags::UNTERMINATED;
+            Some(line)
+        }
         // Handles Ctrl + C
         Err(ref err) if err.kind() == ErrorKind::Interrupted => None,
         // Handles Ctrl + D