diff --git a/src/main.rs b/src/main.rs
index 85ed88f4e616e27b0120230fec1150a68e671d7b..58ecd6386c753b3d56ab4c5f20518dd49eb29151 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -36,8 +36,7 @@ use std::thread;
 
 fn inner_main(sigint_rx : mpsc::Receiver<i32>) {
     let builtins = Builtin::map();
-    let mut shell = Shell::new(&builtins, sigint_rx);
-    shell.evaluate_init_file();
+    let shell = Shell::new(&builtins, sigint_rx);
     shell.main();
 }
 
diff --git a/src/shell/binary.rs b/src/shell/binary.rs
index c667a530ef65f147cb9ea181f86cd5d60d7ab8d5..ef27947168aa192bd9126f79765a57973b41a54e 100644
--- a/src/shell/binary.rs
+++ b/src/shell/binary.rs
@@ -248,6 +248,8 @@ impl<'a> Binary for Shell<'a> {
             context
         });
 
+        self.evaluate_init_file();
+
         self.variables.set_array (
             "args",
             iter::once(env::args().next().unwrap()).collect(),