10

Android 在线文档Android Debug Bridge说“Adb 提供了一个灰壳”。果然,如果我adb shell使用 AVD 模拟器,我会得到 ash,它基本上是一个缩减的 Bourne shell。

但是,如果我连接到几个远程设备,一个是 HTC 手机,另一个是 ASUS Transformer Prime 平板电脑,它们都有一个 Korn shell 版本,它提供:KSH_VERSION='@(#)MIRBSD KSH R39 2010/08/24'. 尽管 MIRBSD KSH 不是成熟的 AT&T Korn shell,但它仍然比 ash 强大得多。

模拟器正在运行 Jelly Bean,并且两个设备都使用 ICS。做更多的挖掘,看起来灰在姜饼里,但在蜂窝里是 mirbsd ksh。

那么,有人可以确认 Android 在线文档是错误的,并且模拟器正在运行一个过时的 shell 吗?还是供应商正在实施他们自己的?

4

1 回答 1

30

我是 mksh(The MirBSD Korn Shell)的作者,并且在已经为 Android 1.5 进行了 mksh 的实验性构建之后,大约在 1.6 时间将其提交到 Android 中。

尽管 Android-x86 很早就使用了它,但它花了很长时间才被接受。起初我们有一个可配置的开关,板配置将决定使用 ash 还是 mksh;谷歌同意在一台设备上只能运送一个。大约在准备 2.4 的时候(从未发布),硬件板配置使用 mksh,而仿真器配置使用 ash,以确保不引入 mksh-specifics 以防他们想要或需要返回灰。2.4 从未发布,我不知道 3.0 系列上使用了什么,但由于 Android 4.0 mksh 是它的标准系统外壳。

mksh 甚至得到了 Geremy Condra 的安全审查,我们(包括 AOSP/Google 人员以及我)定期推送代码更新。有趣的事实:他们最初根本不打算在手机上发布外壳,但同意发布 mksh,因为那时他们已经发布了带有外壳的设备,因此它成为已发布 API 的一部分。Android 开发人员在 mksh 中的 #1 功能是 tab 补全。

现在查看在线文档,似乎他们删除了 ash 参考。他们现在只是没有明确说明哪个 shell 可用。(他们确实同意链接到在线文档中的 mksh 主页——我为此提交了一个补丁——以便用户可以 RTFM 并提供错误报告和其他反馈。)

于 2013-09-17T08:19:15.740 回答