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

Acabo de rootear mi antiguo teléfono con Android 2.3.3 y me gustaría definir algunos alias para cada shell que inicio (con adb o aplicación de terminal). Encontré esta pregunta donde una respuesta dice que /etc/profile(= /system/etc/profiledebido a un enlace suave /etc-> /system/etc) es uno de los archivos que el shell obtiene al inicio. Pero esta publicación habla de /system/bin/shser un enlace a /system/bin/mksh, que no es el caso en mi sistema 2.3.3.

A pesar de que strings shse produce /etc/profilecomo una salida, el archivo no tiene fuente.

¿Alguien conoce la versión anterior de Android y si tengo la oportunidad de obtener /etc/profile o algún otro archivo que se origine en el inicio de Shell? Pensé que podría ser un problema de permisos, pero incluso rwxrwxr-x no ayuda.

Respuestas (1)

Como escribí en la otra pregunta , adb shellno inicia un shell de inicio de sesión. Solo los shells de inicio de sesión leen /etc/profile.

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

Entonces podrías engañarlo e ingresar el siguiente código después de ingresar adb shellal modo:

ENV=/etc/profile sh

Probablemente pueda usar execpara reemplazar el shell actual, pero este es el tipo más corto que se me ocurre, ya que tendrá que escribirlo cada vez.


Alternativamente, puede compilar mkshpara Android 2.3 (funciona al menos hasta 1.5, si no es anterior) manualmente (el archivo Android.mk es específico de la versión, desafortunadamente, por lo que tendrá que llamar a Build.sh directamente) y agregar el binary, luego reemplace el valor predeterminado shcon él (lo probé primero con Android 1.6; cuanto más nueva se usó la versión mksh, mejor, ya que las versiones anteriores tenían errores, por ejemplo, impidiendo que adb installfuncionara).

Descargo de responsabilidad: soy el desarrollador de mksh .