在ipython笔记本电脑和控制台连接到同一内核时同步历史记录

在ipython笔记本电脑和控制台连接到同一内核时同步历史记录,ipython,ipython-notebook,Ipython,Ipython Notebook,我有ipython笔记本在远程服务器上运行,即 ipython notebook --profile=nbserver 我可以从本地机器访问它。此外,我从我的机器ssh到远程服务器,并在该服务器上启动ipython控制台(终端)。我发现以下命令很有效: ipython console --existing \ ~/.config/ipython/profile_nbserver/security/kernel-*.json 现在我从两个不同的客户端连接到同一个远程内核(让我们称它们为brow

我有
ipython笔记本
在远程服务器上运行,即

ipython notebook --profile=nbserver
我可以从本地机器访问它。此外,我从我的机器ssh到远程服务器,并在该服务器上启动ipython控制台(终端)。我发现以下命令很有效:

ipython console --existing \
~/.config/ipython/profile_nbserver/security/kernel-*.json
现在我从两个不同的客户端连接到同一个远程内核(让我们称它们为
browser
terminal
)。除了一个恼人的细节外,一切都很顺利:

1) 在
浏览器中
,我键入
a=1

2) 在
终端
中,我键入
b=2

3) 在两个客户端中,我都可以使用
%history
看到这两个命令。但是,当我想使用Up循环浏览历史记录(在
终端
)时,它只显示终端中键入的命令(即
b=2
)。类似地,我无法在终端中使用
a
+PageDown返回历史并找到以
a
开头的命令

据我所知,我的两个客户端正在使用两个独立的历史文件
history.sqlite
。但是为什么
%history
显示所有命令

问题: 有没有办法为两个客户端使用一个
history.sqlite
进行配置


我发现,轻松接触历史绝对至关重要。此外,我认为使用终端和浏览器是互补的,两者都有折衷之处,最好结合使用。

您可以通过在终端设置历史记录来设置历史记录的加载位置:

ipython --HistoryManager.hist_file=$HOME/ipython_hist.sqlite
或在ipython配置文件中:

import os
c.HistoryManager.hist_file=os.path.expanduser("~/ipython_hist.sqlite")

历史数据库会同时处理来自两个客户端的访问吗?我猜他们实际上会互相攻击,因为这是一个sqlite文件。。。不妨尝试一下,看看会发生什么!为什么
%history
会在两个客户端中显示完整的历史记录?