For Erlang/OTP 20
This is built-in (from https://hexdocs.pm/iex/IEx.html#module-shell-history)
From Erlang/OTP 20, it is possible to get shell history by passing
some flags that enable it in the VM. This can be done on a per-need
basis when starting IEx:
iex --erl "-kernel shell_history enabled"
If you would rather enable
it on your system as a whole, you can use the
variable and make sure that it is set accordingly on your
On Linux [and macOS]:
export ERL_AFLAGS="-kernel shell_history enabled"
set ERL_AFLAGS "-kernel shell_history enabled"
To show where the history file is located, run the following code from erl (Mac OS example value shown):
1> filename:basedir(user_cache, "erlang-history") "/Users/your.username/Library/Caches/erlang-history"
To set the file to a different location, use the
shell_history_path /path/to/history-file option from the erlang docs (compatible with Elixir/iex):
export ERL_AFLAGS="-kernel shell_history_path '\"$HOME/.erlang-history\"'"
For Erlang/OTP 19 and below
Try using https://github.com/ferd/erlang-history
> git clone https://github.com/ferd/erlang-history.git > cd erlang-history > sudo make install # may not need sudo depending on installation