diff --git a/hadrian/hie-bios b/hadrian/hie-bios
index 741537ea347b00a7c8608f403c9a051b04e32546..f7324bc2bdb4e5f94032518e139f8ded62afb378 100755
--- a/hadrian/hie-bios
+++ b/hadrian/hie-bios
@@ -3,5 +3,6 @@
 # When run, this program will output a list of arguments which are necessary to
 # load the GHC library component into GHCi. The program is used by `ghcide` in
 # order to automatically set up the correct GHC API session for a project.
-echo $(TERM=dumb CABFLAGS=-v0 $PWD/hadrian/build.cabal.sh tool-args -q --build-root=.hie-bios --flavour=ghc-in-ghci) -ighc ghc/Main.hs
+TERM=dumb CABFLAGS=-v0 $PWD/hadrian/build.cabal.sh tool-args -q --build-root=.hie-bios --flavour=ghc-in-ghci > $HIE_BIOS_OUTPUT
+echo -ighc >> $HIE_BIOS_OUTPUT
 
diff --git a/hadrian/src/Rules.hs b/hadrian/src/Rules.hs
index 3f6397fdccc4acf9ca17b5ae9d10e4b512be9bf2..f24cf8853f0e6041359547409bf7c8e1f82a9e86 100644
--- a/hadrian/src/Rules.hs
+++ b/hadrian/src/Rules.hs
@@ -60,7 +60,7 @@ toolArgsTarget = do
     -- Find out the arguments that are needed to load a module into the
     -- session
     arg_list <- interpret fake_target getArgs
-    liftIO $ putStrLn (intercalate " " arg_list)
+    liftIO $ putStrLn (intercalate "\n" arg_list)
 
 allStages :: [Stage]
 allStages = [minBound .. maxBound]