10

AndroidのオンラインドキュメントAndroidDebugBridgeには、「Adbはashシェルを提供しています」と記載されています案の定adb shell、AVDエミュレーターを使用すると、基本的にカットダウンされたBourneシェルであるashが発生します。

ただし、HTC電話とASUS Transformer Primeタブレットの2つのリモートデバイスに接続すると、どちらにもKornシェルのバージョンがありますKSH_VERSION='@(#)MIRBSD KSH R39 2010/08/24'。MIRBSD KSHは本格的なAT&T Kornシェルではありませんが、それでもashよりもはるかに強力です。

エミュレーターはJellyBeanを実行しており、両方のデバイスがICSを使用しています。もう少し掘り下げると、灰はジンジャーブレッドにあったように見えますが、ハニカムにはmirbsdkshがあります。

では、Androidのオンラインドキュメントが間違っていること、およびエミュレーターが古いシェルを実行していることを誰かが確認できますか?それとも、サプライヤーが独自に実装しているのでしょうか。

4

1 に答える 1

30

私は mksh (The MirBSD Korn Shell) の作成者であり、Android 1.5 用の mksh の実験的ビルドを既に作成してから、およそ 1.6 時間後に Android に含めるために提出しました。

Android-x86 では非常に早くから使用されていましたが、これが受け入れられるまでにはかなりの時間がかかりました。最初は、ボード構成が ash と mksh のどちらを使用するかを決定する構成可能なスイッチがありました。Google は、1 つのデバイスに 1 つだけを搭載して出荷することに同意しました。2.4 が準備された頃 (これはリリースされませんでした)、ハードウェア ボードの構成では mksh が使用されていましたが、エミュレータの構成では ash が使用されていました。灰。2.4 はリリースされず、3.0 シリーズで何が使用されたかはわかりませんが、Android 4.0 以降は mksh が標準のシステム シェルです。

mksh は Geremy Condra によるセキュリティ レビューも受けており、私たち (AOSP/Google の担当者と私) は定期的にコードに更新をプッシュしています。おもしろい事実: 彼らは最初は電話にシェルを出荷するつもりはまったくありませんでした、mksh を出荷することに同意しました。これは、それまでにシェルを搭載したデバイスを出荷していたため、公開された API の一部になったからです。ash よりも mksh のような Android 開発者の一番の機能は、タブ補完です。

今オンライン ドキュメントを見ると、ash の参照が削除されたようです。現在、どのシェルが利用可能かが明示されていません。(彼らは、オンライン ドキュメントの mksh ホームページへのリンクに同意しました。そのためのパッチを提出しました。これにより、ユーザーは RTFM を使用して、バグ レポートやその他のフィードバックを提供できます。)

于 2013-09-17T08:19:15.740 に答える