3 votes

Shell .profile ou /etc/profile pour les anciens Android 2.3.3

Je viens d'enraciner mon vieux téléphone avec Android 2.3.3 et je voudrais définir des alias pour chaque shell que je lance (avec adb ou l'application terminal). J'ai trouvé cette question où une réponse dit que /etc/profile (= /system/etc/profile en raison de la liaison douce /etc -> /system/etc ) est l'un des fichiers dont le shell se sert au démarrage. Mais ce billet parle de /system/bin/sh étant un lien vers /system/bin/mksh ce qui n'est pas le cas sur mon système 2.3.3.

Malgré le fait que strings sh produce /etc/profile comme une seule sortie, le fichier n'est pas sourcé.

Est-ce que quelqu'un connaît l'ancienne version d'Android et sait si j'ai une chance d'obtenir /etc/profile ou un autre fichier sourcé au démarrage du shell ? Je pensais que cela pouvait être un problème de permission mais même rwxrwxr-x n'aide pas.

4voto

Stu Points 169

Como J'ai écrit dans l'autre question , adb shell fait no démarrer un shell de connexion. Seuls les shells de connexion lisent /etc/profile .

Comme vous pouvez le voir dans Android 2.3.3 sh source, main.c lignes 175. seulement si argv[0] commence par un trait d'union - moins est le shell considéré comme un shell de connexion. Cependant, quelques lignes plus bas (lignes 185.), il y a du code pour lire le contenu du fichier $ENV .

Vous pourriez donc le tromper et entrer le code suivant après avoir entré adb shell mode :

ENV=/etc/profile sh

Vous pouvez probablement utiliser exec pour remplacer la coquille actuelle, mais c'est le plus court chemin vers le type que j'ai trouvé, comme vous le savez. se de devoir le taper à chaque fois.


Alternativement, vous pouvez compiler mksh pour Android 2.3 (cela fonctionne au moins jusqu'à la version 1.5, si ce n'est plus) manuellement (le fichier Android.mk est spécifique à la version, malheureusement, vous devrez donc appeler Build.sh directement) et ajouter le binaire, puis remplacer la commande par défaut sh avec lui (j'ai testé cela d'abord avec Android 1.6 ; plus la version mksh utilisée est récente, mieux c'est, car les premières versions avaient des bogues, empêchant par exemple de adb install de travailler).

Disclaimer : Je suis le mksh développeur.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X