diff --git a/repl/repl.go b/repl/repl.go
index 3bb6eb235e4b9c617fee398008c2231555fbf320..88173b268c5446d3887f480436bfb2444b4c8b63 100644
--- a/repl/repl.go
+++ b/repl/repl.go
@@ -3,6 +3,7 @@ package repl
 
 import (
 	"fmt"
+	"os"
 	"path"
 	"unicode"
 
@@ -13,12 +14,13 @@ import (
 
 // Loop is the main event loop.
 func Loop() error {
-	// fmt.Printf("TODO: get config for user %s using xdg.\n", user)
+	histdir := path.Join(xdg.ConfigHome, "BULLETIN")
+	os.MkdirAll(histdir, 0700)
+	histfile := path.Join(histdir, fmt.Sprintf("%s.history", this.User.Login))
 	rl, err := readline.NewEx(
 		&readline.Config{
-			Prompt: "BULLETIN> ",
-			HistoryFile: path.Join(xdg.ConfigHome, "BULLETIN",
-				fmt.Sprintf("%s.history", this.User.Login)),
+			Prompt:      "BULLETIN> ",
+			HistoryFile: histfile,
 			// TODO: AutoComplete:    completer,
 			InterruptPrompt:   "^C",
 			EOFPrompt:         "EXIT",