Running a child process in Crystal see Process / SO command = "curl http://dist.crystal-lang.org/apt/setup.sh | bash" io = IO::Memory.new status = Process.run(command, shell: true, output: io) puts status.exit_code output = io.to_s Or if you want to duplicate what Crystal does for you: Process.run("sh", {"-c", command}, output: io) Written on August 14, 2020, Last update on August 14, 2020 crystal shell process