2 votos

Cómo funcionan los enlaces simbólicos de la caja de herramientas

En mi emulador de Android, la carpeta /system/bin contiene varios enlaces simbólicos que apuntan al binario de la caja de herramientas:

# ls -l /system/bin
ls -l /system/bin
[SNIP]
lrwxr-xr-x root     shell             2012-08-23 07:01 ls -> toolbox
lrwxr-xr-x root     shell             2012-08-23 07:01 lsmod -> toolbox
lrwxr-xr-x root     shell             2012-08-23 07:01 lsof -> toolbox
[SNIP]
-rwxr-xr-x root     shell      181002 2012-08-23 07:01 toolbox
[SNIP]
#

Mi entendimiento es que 'toolbox' es un binario que es capaz de hacer todo lo que ls, lsmod, lsof etc... pueden hacer, y que llamar a 'ls -l' termina llamando a 'toolbox ls -l'.

Pero lo que no entiendo es cómo funciona esto: si 'ls' es efectivamente un symlink a 'toolbox', entonces 'ls -l' se convertiría en 'toolbox -l', lo que por supuesto no funciona.

¿Qué me falta? (o dicho de otra manera: ¿qué hace que 'ls -l' se convierta en 'toolbox ls -l'?)

3voto

Izzy Puntos 45544

Lo que te falta es: La aplicación (en su caso toolbox ) puede evaluar cómo se ha llamado. Para hacer un ejemplo fácil de Linux: Digamos que tienes un script llamado myscript y llamarlo con los parámetros para1 para2 (es decir myscript para1 para2 ), y el script tiene una línea:

echo $0 $1 $1

Saldría exactamente lo que tú llamaste: myscript para1 para2 . Ahora haz un enlace simbólico: ln -s myscript mylink Llama a mylink para1 para2 y adivina lo que hará "eco": la línea de comandos que has llamado. Así que el análisis de la línea de comandos, sobre la base de la symlink su toolbox fue llamado por, puede determinar qué funcionalidad estaba apuntando.

0 votos

Bien, ahora entiendo lo que realmente me faltaba: Estaba pensando que al llamar a mylink para1 entonces $0 sería igual a "myscript". Por supuesto, no funciona así en absoluto: $0 es igual a "mylink", por lo que el script sí puede saber cuál es el contexto. Muchas gracias.

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