我有两台运行AIX 5.3的unix机器 我的$ HOME安装在machine1上 使用NFS,登录machine2将转到相同的$ HOME
我首先登录machine2,然后登录machine1 两者都使用telnet。
2个会话将共享相同的.sh_history文件。
我发现fc -l的行为很奇怪。在machine2中,我在telnet中发出命令:
fc -l
ksh fc -l
两者都给出相同的输出。
在machine1中,
fc -l
ksh fc -l
给出不同的结果
ksh fc -l
的结果
与/usr/bin/fc -l
另外,当我运行这样的脚本时:
#!/usr/bin/ksh
fc -l
结果与/usr/bin/fc -l
有谁能告诉我发生了什么?
Alvin SIU
答案 0 :(得分:1)
无论如何,我刚刚在Solaris 10中遇到过这个问题。问题似乎如下:当你在/etc/profile
或/etc/profile
调用的任何文件中定义一个函数时,你的HISTFILE
变量被Korn shell忽略,而shell在访问其历史记录时使用".sh_history"
。不知道为什么会这样。
结果是您看到其他root shell的命令。你可以用以下方法测试它:
lsof -p $$
或
cat /proc/$$/fd/63
答案 1 :(得分:0)
登录shell可能不是ksh或$HISTFILE
正在重置。您可以做的一件事是echo $HISTFILE
在各种情况下,看看它是否不同。要检查的另一件事是使用ps
查看您正在使用的shell。
Bash(默认$HOME/.bash_history
)将具有与ksh不同的$HISTFILE
(默认$HOME/.sh_history
)。
另一个可能的原因是内置fc
可能会看到尚未写入磁盘的内存中的历史记录(外部/usr/bin/fc
将无法访问查看)。如果是这样,则可能与版本有关。例如,Bash在shell退出之前不会将历史记录写入文件。 Ksh(至少我正在使用的版本)立即写入。