diff --git a/src/shell/mod.rs b/src/shell/mod.rs
index 42e20684376bc54b1793a7f092518ab5440ca1a8..9722f4014ae21f97856f884432aff1d2f45240a5 100644
--- a/src/shell/mod.rs
+++ b/src/shell/mod.rs
@@ -240,7 +240,11 @@ impl<'a> Shell {
                         .map(String::from)
                         .chain(pipeline.items[job_no].job.args.drain().skip(1))
                         .collect::<Array>();
-                    pipeline.items[job_no].job.command = new_args[0].clone().into();
+                    if let Some(builtin) = BUILTINS.get(&new_args[0]) {
+                        pipeline.items[job_no].job.builtin = Some(builtin.main);
+                    } else {
+                        pipeline.items[job_no].job.command = new_args[0].clone().into();
+                    }
                     pipeline.items[job_no].job.args = new_args;
                 }
             }