Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Elixir 如何保存IEx历史记录?_Elixir_Elixir Iex - Fatal编程技术网

Elixir 如何保存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

使用IEx(Elixir的REPL),我希望能够保存我的命令历史记录

例如:

我可以打开一个新的IEx会话并执行一个命令。执行命令后,我可以按向上箭头并预填充最后一个命令。关闭IEx并重新打开后,我希望能够访问我最后的命令


有办法做到这一点吗?

对于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"