Is it possible to enable a command history feature for the iex console?

I mean to be able to go back to previously used commands using the up arrow key.


This is enabled by default for all versions of Erlang, but only ever affects the current session.

From Erlang OTP 20 on, you can enable a history that spans sessions:

Be aware though that on windows you might need to use werl/iex --werl.


I am running latest OTP and have just enabled it by:

export ERL_AFLAGS="-kernel shell_history enabled"


Hi all,

First off, not sure if I’m breaking protocol by replying to an older thread - apologies if I am.

I’ve tried this a few times in my .bashrc .profile, and .bash_profile, to no avail … if anyone has any other ideas that would be massively appreciated please.



Are you using bash?

Have you restarted your shell after adding the export?

I am using bash. Do I need to fully close out my terminal, or can I simply source my updated profile file - which is what I did?

Sourcing should be enough.

What version of erlang are you on?

Erlang/OTP 23 [erts-11.0.3] [source] [64-bit] [smp:12:12] [ds:12:12:10] [async-threads:1] [hipe]
Eshell V11.0.3

Erlang/OTP 23 [erts-11.0.3] [source] [64-bit] [smp:12:12] [ds:12:12:10] [async-threads:1] [hipe]
Interactive Elixir (1.10.4)


When you have that export enabled and you start erl or iex, issue a command, exit it, then start again and push ?

If you do System.get_env("ERL_AFLAGS") in iex, what does it return?

I get the following:

iex(1)> System.get_env("ERL_AFLAGS")
"-kernel shell_history enabled"

Hmmm … I know this is going to sound silly, but let me completely restart my gnome session and reboot and see what happens … I’ve seen some quirks previously where settings changes didn’t seem to apply until I rebooted …

All working now, sorry for the noise.

Thanks for all your help @NobbZ.