Autor Tema: Cómo funciona BASH?  (Leído 18352 veces)

0 Usuarios y 1 Visitante están viendo este tema.

vk496

  • Visitante
Cómo funciona BASH?
« en: 18-04-2014, 17:17 (Viernes) »
He estado haciendo unas pruebas y estoy algo confuso...

Mi intérprete por defecto es /bin/bash

Cuando ejecuto un programa de esta forma:

$ ./miprograma.bin

Se abre perfectamente. Sin embargo, si hago esto:

$ bash miprograma.bin

Me dice que no puede ejecutar el binario...

Que sucede para que me deje de una forma y no de la otra?

Salu2



Desconectado USUARIONUEVO

  • Colaborador
  • *
  • Mensajes: 15940
Re: Cómo funciona BASH?
« Respuesta #1 en: 19-04-2014, 00:04 (Sábado) »
bash no ejecuta ficheros "binarios"  , si no scripts , "sh"

cualquier fichero con extension sh , la abrira, pero nunca un binario ejecutable.

vk496

  • Visitante
Re: Cómo funciona BASH?
« Respuesta #2 en: 19-04-2014, 01:30 (Sábado) »
Entonces como saber el interprete que necesita un ejecutable?

En linux las extensiones de los archivos no importan nada, solo si es ejecutable o no... ¿pero quien es el encargado de ejecutar esos archivos? Si no es sh ni bash, entonces quien?

Salu2

Desconectado USUARIONUEVO

  • Colaborador
  • *
  • Mensajes: 15940
Re: Cómo funciona BASH?
« Respuesta #3 en: 19-04-2014, 01:34 (Sábado) »
Entonces como saber el interprete que necesita un ejecutable?

En linux las extensiones de los archivos no importan nada, solo si es ejecutable o no... ¿pero quien es el encargado de ejecutar esos archivos? Si no es sh ni bash, entonces quien?

Salu2

eso yo tampoco lo se ,  ;)

pero bash no.

vk496

  • Visitante
Re: Cómo funciona BASH?
« Respuesta #4 en: 19-04-2014, 13:21 (Sábado) »
Estoy intentando ejecutar un binario desde OpenWRT y me surge esa enorme duda, porque no tengo ni idea de como conseguir ejecutar el dichoso binario...

Sin embargo, un SO Linux no es una excepción, le sucede exactamente lo mismo. Hasta ahora creía que siempre era bash o cualquier otro interprete el que se encargaba de "interpretar", pero empiezo a tener mis dudas...

Por otro lado, encontré una herramineta muy útil: file

Código: [Seleccionar]
$ file /usr/bin/gcc

/usr/bin/gcc: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped

Desconectado jar229

  • Colaborador
  • *
  • Mensajes: 4607
Re:
« Respuesta #5 en: 19-04-2014, 19:03 (Sábado) »
UF, ni idea de este tema, lo lamento :-(

Enviado desde mi CUBOT GT99


shaola

  • Visitante
Re: Cómo funciona BASH?
« Respuesta #6 en: 19-04-2014, 20:50 (Sábado) »
lo importante es saber que quieres hacer, bash efectivamente ejecuta scripts, pero también ejecuta binarios si se les llama desde la entrada estándar y se ha ejecutado bash previamente sin argumentos o con el parámetro --login o -i (interactive).

Es un poco complicado de explicar en unas pocas frases, pero básicamente lo que hace bash es obtener de la entrada estándar comprobar si el string es un archivo ejecutable y ejecutarlo con una llamada del sistema, pero ésto solo cuando es en modo interactivo, es decir lo que es una terminal como la conocemos, cuando ejecutamos bash loquesea tenemos que tener en cuenta que estamos ejecutando bash dentro de bash.

MMM, no se si lo estoy explicando bien,   si ejecutamos bash --login abrimos una nueva shell.  Si al arrancar el sistema ejecuta automáticamente bash --login entonces nos pide usuario y contraseña.

Dicho todo esto, bash solo acepta como parámetros de entrada algunas opciones y scripts.

Así que mi pregunta es, si quieres ejecutar un archivo ejecutable y sabes que puedes ejeutarlo así:

./ejecutable

cual es tu problema?  recuerda que es bash quien lo está ejecutando,  (o más bien llamando a la llamada del sistema que lo ejecuta, pero bueno, para el caso es lo mismo)
Que quieres hacer?



vk496

  • Visitante
Re: Cómo funciona BASH?
« Respuesta #7 en: 19-04-2014, 21:26 (Sábado) »
Perdonarme, tenía que haber explicado mis intenciones desde el principio... meua culpa.

http://www.cstrike-planet.com/tutorial/1-Linux-Install-CS-16/6

Por casualidad llegué a ver esto por Internet, con lo que me vino a la mente si se podía hacer esto desde OpenWRT. Estoy haciendo las pruebas desde VirtualBox con el OpenWRT 12.09 y una partición extroot de 2gb. Mi problema es que no puedo ejecutar el maldito binario (hldsupdatetool.bin) ni lo que extrae ese ejecutable (steam).

Si pruebo a hacerlo desde Ubuntu, no tengo problemas (./miprograma), pero no de la otra forma (bash miprograma). Por eso mi pregunta no se limita a OpenWRT, sino a Linux en general.

Que debo hacer para saber como ejecutar un binario en caso de que no me deje con la forma tradicional (./miprograma) ?

Salu2

shaola

  • Visitante
Re: Cómo funciona BASH?
« Respuesta #8 en: 20-04-2014, 00:39 (Domingo) »
olvídate, nunca podrás ejecutar eso en openwrt. Si está steam involucrado mucho menos. Steam requiere de muchas librerías que no están incluidas en openwrt.  Además lo estás ejecutando en una máquina virtual que me imagino estará en x86, pero si tu intención es probarlo para ejecutarlo sobre un router ya ni te cuento...

incompatibilidad de los binarios por arquitectura, por posibles llamadas al sistema no incluidas en openwrt y por supuesto por capacidad de proceso.

vk496

  • Visitante
Re: Cómo funciona BASH?
« Respuesta #9 en: 20-04-2014, 00:58 (Domingo) »
Sabía que en un router es casi imposible (digo casi porque realmente se puede, pero requiere demasiado trabajo). En principio solo lo quería probar desde Maquina virtual, como concepto, pero me da que nanai...  ;D

Salu2

shaola

  • Visitante
Re: Cómo funciona BASH?
« Respuesta #10 en: 20-04-2014, 11:19 (Domingo) »
Sabía que en un router es casi imposible (digo casi porque realmente se puede, pero requiere demasiado trabajo). En principio solo lo quería probar desde Maquina virtual, como concepto, pero me da que nanai...  ;D

Salu2

no, no, si steam está involucrado es imposible, sin el casi.  steam solo tiene binarios para la arquitectura x86, yo no conozco ningún router con esa arquitectura, otra cosa sería montarte tú el servidor de cs sin involucrar steam.  En ese caso sí podrías llegar a conseguirlo pero necesitarías un router con puerto usb para la cantidad de librerías extra que necesitarías y el rendimiento sería tan pobre que no pasaría de prueba de concepto.

Todo esto suponiendo que no tengas un router profesional de esos de más de 1000 euros