Shell .profile oder /etc/profile für altes Android 2.3.3

Ich habe gerade mein altes Telefon mit Android 2.3.3 gerootet und möchte einige Aliase für jede Shell definieren, die ich starte (mit adb oder Terminal-App). Ich habe diese Frage gefunden , bei der eine Antwort besagt, dass /etc/profile(= /system/etc/profileaufgrund von Softlink /etc-> /system/etc) eine der Dateien ist, die die Shell-Quellen beim Start enthalten. Aber dieser Beitrag spricht davon, /system/bin/shein Link zu zu sein /system/bin/mksh, was auf meinem 2.3.3-System nicht der Fall ist.

Trotz der Tatsache, dass eine Ausgabe strings sherzeugt wird , wird die Datei nicht bezogen./etc/profile

Kennt jemand zufällig die alte Android-Version und ob ich die Möglichkeit habe, /etc/profile oder eine andere Datei zu erhalten, die beim Start der Shell bezogen wird? Ich dachte, es könnte ein Berechtigungsproblem sein, aber selbst rwxrwxr-x hilft nicht.

Antworten (1)

Wie ich in der anderen Frage geschrieben habe , startet keine Login adb shell- Shell. Nur Login-Shells lesen ./etc/profile

Wie Sie in Android 2.3.3 sh source sehen können, main.cZeilen 175ff. nur wenn sie argv[0]mit einem Bindestrich-Minus beginnt, wird die Shell als Login-Shell betrachtet. Ein paar Zeilen darunter (Zeile 185ff.) gibt es jedoch Code, um den Inhalt von zu lesen $ENV.

Sie könnten es also austricksen und nach dem Aufrufen des adb shellModus den folgenden Code eingeben:

ENV=/etc/profile sh

Sie können wahrscheinlich verwenden exec, um die aktuelle Shell zu ersetzen, aber dies ist die kürzeste Eingabe, die mir einfällt, da Sie sie jedes Mal eingeben müssen .


Alternativ können Sie mkshfür Android 2.3 (es funktioniert bis mindestens 1.5, wenn nicht älter) manuell kompilieren (die Android.mk-Datei ist leider versionsspezifisch, daher müssen Sie Build.sh direkt aufrufen) und hinzufügen Binärdatei, dann ersetzen Sie die Standardeinstellung shdamit (ich habe das zuerst mit Android 1.6 getestet; je neuer die verwendete mksh-Version, desto besser, da frühere Versionen Fehler hatten, z. B. nicht funktionierten adb install).

Haftungsausschluss: Ich bin der mksh- Entwickler.