3 votos

Shell .profile o /etc/profile para el antiguo Android 2.3.3

Acabo de rootear mi viejo teléfono con Android 2.3.3 y me gustaría definir algunos alias para cada shell que inicio (con adb o la aplicación terminal). He encontrado esta pregunta donde una respuesta dice que /etc/profile (= /system/etc/profile debido al enlace suave /etc -> /system/etc ) es uno de los archivos que el shell genera al iniciarse. Pero este post habla de /system/bin/sh siendo un enlace a /system/bin/mksh , lo que no ocurre en mi sistema 2.3.3.

A pesar de que strings sh produce /etc/profile como una salida, el archivo no es de origen.

¿Alguien sabe por casualidad la versión antigua de Android y si tengo la posibilidad de obtener /etc/profile o algún otro archivo de origen en el inicio del shell? Pensé que podría ser un problema de permisos, pero incluso rwxrwxr-x no ayuda.

4voto

mirabilos Puntos 165

Como He escrito en la otra pregunta , adb shell hace no iniciar un shell de inicio de sesión. Sólo los shells de inicio de sesión leen /etc/profile .

Como puede ver en Fuente de Android 2.3.3 sh, main.c líneas 175ff. sólo si argv[0] comienza con un guión-menos se considera que el shell es un shell de inicio de sesión. Sin embargo, unas líneas más abajo (líneas 185ff.) hay código para leer el contenido de $ENV .

Así que podrías engañarlo e introducir el siguiente código después de entrar adb shell modo:

ENV=/etc/profile sh

Probablemente pueda utilizar exec para reemplazar la cáscara actual, pero esto es lo más corto para escribir que se me ocurre, ya que se tener que escribirlo cada vez.


Como alternativa, puede compilar mksh para Android 2.3 (funciona al menos hasta la 1.5, si no es anterior) manualmente (el archivo Android.mk es específico de la versión, por desgracia, por lo que tendrá que llamar directamente a Build.sh) y añadir el binario, a continuación, sustituir el valor por defecto sh con él (lo probé primero con Android 1.6; cuanto más nueva sea la versión de mksh utilizada, mejor, ya que las primeras versiones tenían errores, por ejemplo, que impedían adb install de trabajar).

Descargo de responsabilidad: Soy el mksh desarrollador.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X