我在 SunOS 5.10 服务器上打开了多个 PuTTy 会话,并且我使用的是 ksh,有时命令历史记录在不同的会话之间共享,有时则不共享。我不知道是什么决定了它是否共享。所谓共享,我的意思是,在一个会话中运行的命令将被视为在另一个会话中运行的上一个命令。
我不希望它被共享,有没有配置设置?
答案1
大多数 Unix shell 都会从文件中读取旧历史记录,一次(当启动 shell 时),而当您关闭该 shell 时,历史记录会再次写入该文件。
通常旧内容会被简单地覆盖,因此如果你执行以下操作......
- 登录会话 A 和 B
- A和B读了相同的内容
~/.history
- A和B读了相同的内容
test
在 A 中 运行命令- A 添加
test
到其内存历史记录中 - B 不知道该命令
- A 添加
- 从 A 退出
- A
~/.history
用其历史记录进行覆盖,test
- A
- 登录会话C
- C 读取 的内容
~/.history
,使用test
- C 读取 的内容
- 从B注销
- B
~/.history
用其历史记录进行覆盖,而历史记录没有test
- B
- 从 C 注销
- C
~/.history
用其历史覆盖,test
- C
然后test
将在步骤#3之后保存到历史文件中,但步骤#5将丢弃它,步骤#6将再次添加它......
一些 shell 具有“附加历史记录”选项,可以避免这种情况(例如shopt -s histappend
在 Bash 中)。
如果您想要拥有完全独立的历史记录,一个简单的方法就是将您的历史文件符号链接到/dev/null
。