1. 背景原因

由于 openwrt 默认 root 用户使用的 shell 解释器是 ash 它的 history 命令默认只能在当前这次 ssh 会话中有效,当你 exit 重新 ssh 登录上了之后,执行 history 命令发现输出是空的

最简单的解决办法就是把用户的 shell 解释器换成 Linux 默认的 bash 就可以了

2. 安装 bash

opkg update && opkg install bash

如果安装成功,请继续;如果安装不成功,看下是什么问题导致没有安装成功,自行 google 解决

3. 修改 root 用户的 shell 解释器

编辑 /etc/passwd 文件

修改第一行(第一行就是 root 用户)中的 /bin/ash,改成 /bin/bash

然后保存,再重启路由器。此时问题已经解决了

本文来源: "openwrt ssh 进入主机 history 命令在退出ssh之后就被清空,可以让退出ssh依然保存吗 - OPENWRT专版 - 恩山无线论坛 - Powered by Discuz!"

查看 /etc/shells 文件可以看到当前系统中有哪些可用的 shell 解释器

# cat /etc/shells
/bin/ash
/bin/bash
/bin/rbash

4. 扩展阅读

ash

一个简单的轻量级的 Shell,占用资源少,适合运行于低内存环境,但是与下面讲到的 bash shell 完全兼容。

bash

bash shell 是 Linux 的默认 shell。

bash 由 GNU 组织开发,保持了对 sh shell 的兼容性,是各种 Linux 发行版默认配置的 shell。

bash 兼容 sh 意味着,针对 sh 编写的 Shell 代码可以不加修改地在 bash 中运行。

尽管如此,bash 和 sh 还是有一些不同之处:一方面,bash 扩展了一些命令和参数;另一方面,bash 并不完全和 sh 兼容,它们有些行为并不一致。

来源: "常见的Shell(sh、bash、csh、tcsh、ash、zsh)介绍 | 云上小悟"

end.