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 ERL_AFLAGS
environment
variable and make sure that it is set accordingly on your
terminal/shell configuration.
On Linux [and macOS]:
export ERL_AFLAGS="-kernel shell_history enabled"
On Windows:
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