Elixir 如何保存IEx历史记录?
使用IEx(Elixir的REPL),我希望能够保存我的命令历史记录 例如: 我可以打开一个新的IEx会话并执行一个命令。执行命令后,我可以按向上箭头并预填充最后一个命令。关闭IEx并重新打开后,我希望能够访问我最后的命令Elixir 如何保存IEx历史记录?,elixir,elixir-iex,Elixir,Elixir Iex,使用IEx(Elixir的REPL),我希望能够保存我的命令历史记录 例如: 我可以打开一个新的IEx会话并执行一个命令。执行命令后,我可以按向上箭头并预填充最后一个命令。关闭IEx并重新打开后,我希望能够访问我最后的命令 有办法做到这一点吗?对于Erlang/OTP 20 这是内置的(从) 从Erlang/OTP20,可以通过传递 在VM中启用它的一些标志。这可以根据需要进行 启动IEx的依据: iex--erl“-内核shell\u历史记录已启用” 如果你愿意 在整个系统上,您可以使用ERL
有办法做到这一点吗?对于Erlang/OTP 20 这是内置的(从) 从Erlang/OTP20,可以通过传递 在VM中启用它的一些标志。这可以根据需要进行 启动IEx的依据:
iex--erl“-内核shell\u历史记录已启用”
如果你愿意
在整个系统上,您可以使用ERL\u AFLAGS
环境
变量,并确保在
终端/外壳配置
在Linux[和macOS]上:
export ERL\u AFLAGS=“-kernel shell\u history enabled”
在Windows上:
设置ERL\u AFLAGS”-内核shell\u历史启用“
要显示历史文件的位置,请从erl运行以下代码(显示Mac OS示例值):
要将文件设置到其他位置,请使用shell\u history\u path/path/To/history文件
:
适用于Erlang/OTP 19及以下版本 试用
我正在使用oh my zsh,所以我打开了
vim~/.zshrc
:
# Enable history in IEX through Erlang(OTP)
export ERL_AFLAGS="-kernel shell_history enabled"
然后
source~/.zshrc
,现在总是加载。谢谢@loeschg.我不知道事情是否在某个时候发生了变化,但我发现上面的方法不起作用。在查看了iex的手册页之后,我注意到它需要
export ELIXIR_ERL_OPTIONS="-kernel shell_history enabled"
(注意额外的长生不老药)。也许最初的解决方案是令人信服的,并且与erl相关(我发现它对erl有效),但iex添加了限定符?由于最初的问题是针对iex的,所以我认为应该对其进行更新。只是尝试了一下,在某些情况下,当通过按两次
Ctrl
+C
退出iex时,历史记录似乎写得不正确,很多人都是这样做的。我总是用Ctrl
+G
Q
Enter
终止IEx,但这是一种更干净的退出IEx的方式。我注意到,有时候这与退出的速度有关。可能是某种文件写入竞争条件?哈哈,可能只是需要更长的时间来点击这个疯狂的组合键,所以我不太可能遇到这个问题;-)在MacOS上,您必须创建一个空的历史文件,否则它将无法工作:$touch~/.iex_history@jaydel我想这与按下电源按钮关闭电脑,而不是使用操作系统的“关机”功能是一样的:状态被保存,不会以错误结束等等。
> git clone https://github.com/ferd/erlang-history.git
> cd erlang-history
> sudo make install # may not need sudo depending on installation
# Enable history in IEX through Erlang(OTP)
export ERL_AFLAGS="-kernel shell_history enabled"
export ELIXIR_ERL_OPTIONS="-kernel shell_history enabled"