This post has been updated to take in account OTP 20 new features.
Update with OTP 20
OTP 20 now supports persistent history out of the box, the only thing
you need to do is to set the environment variable
-kernel shell_history enabled, so you can for example add the following to your
export ERL_AFLAGS="-kernel shell_history enabled"
Recently I am starting to use Elixir a bit more seriously, and a small issue I had was that Elixir repl, IEx, history does not persist between sessions.
Being used to repl like
pry which do that out of the box, I wanted to have this functionality, which is in my opinion very convenient.
It seems that the problem is more directly related to Erlang than to Elixir itself, and therefore, the workarounds that are used to get persistent history for the Erlang repl can also be used for Elixir.
The erlang-history project worked perfectly for me
git clone https://github.com/ferd/erlang-history.git cd erlang-history make install
and I was able to get a history persistent across sessions. Note that
make install needs sudo if you do not have write permissions in the Erlang install directory.