¿Cuál es el equivalente de un "archivo exe"?

47

No sé cuál es la extensión exacta del archivo ejecutable. Es .debo .tar.gz?

usuario54905
fuente
13
No es una respuesta, pero me gustaría agregar TODO en LINUX es un ARCHIVO, por lo que tener Extensiones como .exe nunca importa.
atenz
15
@tijybba La filosofía de diseño "todo es un archivo" no tiene.exe ninguna relación con las extensiones que no son necesarias para los ejecutables nativos. El primero explica el contenido de /dev; esto último se debe a los permisos de ejecución y la confianza en el examen del interior de un archivo para determinar qué tipo de archivo es.
Eliah Kagan
@ Eliah Kagan: era solo una información básica, ya que en Windows la extensión es necesaria para la ejecución, bueno, en Linux no lo es, en lo que respecta a los permisos ejecutables , requiere poco más Know How de Sudo: acceso de usuario y preocupaciones de seguridad subyacentes , que supuse que alguien aclararía en respuesta como su última parte, si es necesario, es por eso que lo publiqué como comentario, no como respuesta.
atenz
44
@tijybba Pero "todo" ser un archivo realmente no tiene nada que ver con el tema de esta pregunta, ¿verdad?
Eliah Kagan
2
Supongo que leí mal esa parte en cuestión, que dice "¿qué es un archivo exe en Ubuntu?", Lo consideré ejecutable , pero ahora con su ansiosa ayuda parece que significaba "¿qué es un archivo .exe en Ubuntu?". Si es muy inapropiado, avíseme si me gustaría eliminarlo (los errores son excelentes experiencias de aprendizaje: D).
atenz

Respuestas:

42

No hay extensión de archivo estándar como un archivo ".exe" en Windows.

En Linux, casi cualquier archivo puede ser ejecutable. El final del archivo solo describe (pero no necesariamente) qué o cómo se "ejecuta" un archivo.

Por ejemplo, un script de shell termina con .sh y se "ejecuta" a través del shell bash.

En su pregunta, pide .deb y .tar.gz Bueno, el archivo .deb instala el software en su sistema (¡Tenga cuidado!) Y el archivo .tar.gz es un archivo comprimido como un .zip que puede conocer de Windows

rechengehirn
fuente
1
Entonces, .deb es un archivo .exe.
user54905
13
@Nick, los .debarchivos NO suelen ser ejecutables: no son scripts ELF ni "she-bang" y es poco probable que se registren con binfmt. Incluso con permisos ejecutables, el núcleo no sabría qué hacer con ellos. El hecho de que su explorador de archivos se pueda registrar para abrir archivos con una determinada aplicación basada en la extensión no tiene nada que ver con que sean ejecutables (en términos de permiso de archivo o en términos de ejecución de formato binario del núcleo).
Bruno
44
El archivo .deb también se parece más a un .zip que a un .exe. El punto es que .deb no se ejecuta solo , es extraído, interpretado e instalado por alguna otra aplicación.
Rafał Cieślak
55
Esa otra aplicación suele ser el Centro de software, que también funciona como instalador. Linux depende menos de las extensiones en comparación con Windows y, por lo tanto, decide la capacidad de ejecución en función de los permisos en lugar de la extensión.
tyjkenn
33
.debse parece más a un .msiarchivo que a un .exearchivo.
detly
79

Resumiría el sistema de la siguiente manera:

Linux extension    |Windows Equivalent    |Short description
------------------------------------------------------------
.so, .o            | .dll                 | Object that can be loaded at runtime (Similar to DLL)
.a                 | .lib                 | Static library
[none], .elf(rare),| .exe, .com(rare)     | Linux executables
  .bin(rare)       |                      |
.sh                | .bat                 | Shell script
.exe               | .exe                 | Mono application, Wine application
.deb               | .msi                 | Installer package for Debian/Ubuntu releases
                   |                      |   (Though .deb is much more powerful with 
                   |                      |   native support for dependencies and repos). Note that .deb is actually a .ar archive with a special control file, a special file order, and a different extension.
.rpm               | .msi                 | Installer package for RedHat/CentOS releases.
.tar.gz, .tar, .gz | .zip                 | Compressed files that can contain a program or any other data, like images, documents, etc
.ko                | .sys                 | Drivers and kernel modules are loaded into the Linux kernel and have more hardware access than other programs.
.sh, .php, .py, etc| .bat, .cmd, .vbs,    | Linux is capable of running any file that it has an interpreter for. 
                   |   .js                |   A line at the top of the file called the shebang specifies what interpreter to run the file with. 
                   |                      |   Windows only supports .bat and .cmd files as Batch files, and .vbs (vbscript) and .js (JScript, not to be confused with JavaScript) via the Windows Script Host (WSH).

Cualquier archivo que comience con #!(llamado shebang o hashbang) en la primera línea es solo un script. La ruta después del shebang es una ruta al programa (ejecutable) que necesita analizar el script, suponiendo que el permiso de ejecución se haya establecido en el archivo con chmod a+x filename.

Por lo tanto, responda su pregunta original, no hay extensión, o raramente, es .elfo .bin.

Esto se ha hecho Community Wiki, por lo que cualquiera puede agregar una entrada.

ζ--
fuente
2
Nunca he visto la extensión .elf pero vi la extensión .bin con bastante frecuencia.
Calmarius
1
Mientras que las otras respuestas se centran en el hecho de que 'cualquier' archivo puede ser un ejecutable, esta respuesta realmente da en el clavo, mientras que decir 'cualquier cosa' puede ser un ejecutable no es realmente informativo o verdadero, sino más bien excepcionalista. Podría cambiar el nombre de cualquier archivo en Windows a .exe, e intentará ejecutarlo, pero no necesariamente funcionará, en Linux es lo mismo, si no está destinado a ejecutarse, no funcionará ... Mi problema muchas veces está descargando un paquete, y realmente no entiendo qué comenzar, pero por supuesto, rtfm.
TrySpace
Debe agregar la extensión .bin (como equivalente de Windows a .exe)
Dani-Br
@ Dani-Br Esta es una publicación de wiki de la comunidad, lo que significa que otros pueden editarla, y usted tiene suficiente reputación para hacerlo (en 101). He agregado .bin por ahora.
ζ--
No es una extensión, pero fue útil para mí saber que el formato "PE" en Windows es el equivalente al formato "ELF" en el pensamiento de Linux
Contador م
23

El concepto de un ejecutable es diferente en unix / linux que Windows.

Ventanas

Todo lo que termina .exeo se .comconvierte en un archivo ejecutable.

Linux / Unix

Todos y cada uno de los archivos tienen un bit ejecutable, por lo que cualquier archivo puede ejecutarse, a diferencia de Windows. Para ver si un archivo es ejecutable, puede verificar sus propiedades (pestaña Permisos), o incluso verlos marcados en el terminal (todos están marcados con un *).

Incluso los archivos de texto (como los scripts de shell) pueden tener sus bits ejecutables establecidos y ejecutarse como uno solo.

Nemo
fuente
44
También vale la pena agregar que, en el caso de los archivos de texto, el shebang ( #!/bin/bashpor ejemplo) al comienzo del archivo establece qué programa ejecuta el archivo.
jackweirdy
Existen bits ejecutables separados para usuarios, grupos y otros. El uso de estos bits puede limitar quién puede ejecutar el programa. Existen bits adicionales para SUID y SGID que hacen que el programa se ejecute como el usuario o grupo propietario del archivo.
BillThor
Hay algunas imprecisiones anteriores: 2) "cada archivo tiene un bit ejecutable": hay tres bits ejecutables (propietario, grupo y otros), por lo que uno puede permitirse a sí mismo, pero no otros, ejecutar un archivo. También hay un bit setuid para "execute-as-owner" y setgid "execute-as-group". 2) "cualquier archivo puede ser ejecutado": no es así. los bits de permiso son una condición requerida pero insuficiente para ejecutar con éxito un archivo. Se producirá un error inmediato, por ejemplo, si el archivo no puede cargarse y ejecutarse realmente (Ref: números mágicos del archivo man magic, ELF man elfy línea hash-bang man execve)
arielf
16

Para averiguar qué piensa un sistema operativo UNIX que es un tipo de archivo en particular, utilice el comando de archivo:

$ file /bin/ls
/bin/ls: ELF 32-bit LSB executable, Intel 80386, version 1, for OpenBSD, statically linked, stripped

En el ejemplo anterior, le doy la ruta al programa 'ls', que reemplazaría con la ruta de su archivo.

Un archivo de script se vería así:

$ file script.sh
script.sh: Bourne-Again shell script text

Un archivo de texto aleatorio:

$ file textfile
textfile: ASCII text

Un archivo de archivo:

$ file rsync-3.0.6.tar.gz
rsync-3.0.6.tar.gz: gzip compressed data, from Unix

Incluso es lo suficientemente inteligente como para identificar correctamente un programa de Windows, en caso de que tenga uno en su caja UNIX:

$ file FMZsetup.exe
FMZsetup.exe: MS-DOS executable (EXE), OS/2 or Windows

Y cuando no puede descubrir qué es un archivo (pero puede abrirlo), lo llama datos:

$ file myrandom
myrandom: data
Don simon
fuente
1
Realmente no es una respuesta, pero un buen lado- "respuesta"
dlin
11

La ejecución de archivos en Linux no está relacionada en absoluto con el nombre o la extensión del archivo. Cualquier archivo puede ejecutarse potencialmente, siempre que sea manejado por el binfmtmecanismo del núcleo (y que sus permisos ejecutables estén configurados).

El formato más común para el ejecutable es ELF , aunque algunos núcleos se pueden compilar para admitir el a.outformato anterior. (Para detalles técnicos completos, binfmt_elf.ces dónde buscar).

Otro mecanismo común es el sistema "Shebang" , manejado por binfmt_script, que busca #!/path/to/interpreteral comienzo del archivo.

binfmt_miscpermite el registro de otros manejadores, como se documenta aquí .

Si te apetece programar un poco el kernel, incluso puedes escribir el tuyo .

Aunque no está directamente relacionado, el filecomando debería decirle si un archivo es un ejecutable ELF u otra cosa.

La convención de nomenclatura no tiene nada que ver con el estado ejecutable de un archivo (excepto cuando se usa para el binfmt_miscregistro). Son solo convenciones. Típicamente, un .exearchivo encontrado en Linux podría ser una aplicación mono , obteniendo la .exeextensión como una convención proveniente del mundo Windows / .Net.

El otro aspecto que puede suceder cuando desea "ejecutar" un archivo es tener la herramienta de exploración de archivos que utiliza para registrar extensiones para poder iniciar un programa que abrirá estos archivos. Esto es lo que pasaría si se hace doble clic en una .txt, .tar.gzo .deb, por ejemplo: los archivos no son ejecutables ni ejecutado, pero lo que se utiliza para hacer doble clic elige qué ejecutable para lanzar al abrir estos archivos.

Bruno
fuente
Creo que esto es mejor como un comentario al lado de una de las respuestas más inclusivas.
ζ--
@ObsessiveFOSS, pero ¿merece un voto negativo? Nadie había mencionado mono antes de mi respuesta. Ninguna respuesta aquí realmente habla sobre cómo funcionan realmente los ejecutables de Linux (vea mi comentario sobre binfmt en la respuesta aceptada) de todos modos.
Bruno
No voté en contra. Sentí que la votación debería permanecer como está.
ζ--
@ObsessiveFOSS, no hay problema. También me di cuenta de que la pregunta había sido editada desde que la respondí, cambiando un poco su significado (lo entendí inicialmente como "Tengo un archivo exe, no puedo ejecutarlo ...") y reduzco mi respuesta relevante de hecho.
Bruno
OKAY. No hay problema.
ζ--
2

En Windows, un archivo .exe es un archivo de computadora que termina con la extensión ".exe" comúnmente conocida como archivo ejecutable. Cuando uno hace clic en un archivo exe, una rutina integrada ejecuta automáticamente el código que puede poner en movimiento varias funciones. Los archivos Exe se usan comúnmente para instalar archivos en el sistema operativo Windows.

Además, tiene archivos .tar, comúnmente conocidos como archivos comprimidos. Las versiones de Linux, como Ubuntu, utilizan características prominentes en varias distribuciones de software, con la mayoría del código fuente de software disponible en el formato tar.gz. gz es una forma del conocido formato .tar, que se usa para archivar.

En Ubuntu, por otro lado, el formato de archivo .deb es el que se comporta más como el archivo .exe en Windows. Cuando lo abre, el centro de software maneja su código e instala el programa que contiene, como un archivo ejecutable.

Aunque todavía puede instalar software y paquetes desde el formato fuente (tar.gz), el formato más adecuado para instalar software es .deb one. Tome como ejemplo el Centro de software de Ubuntu; todas las aplicaciones que contiene son, de hecho, archivos .deb. En general, en Linux, casi todos los formatos de archivo (incluidos .deb y tar.gz, así como los conocidos archivos bash .sh) pueden comportarse como un archivo ejecutable para que usted puede instalar paquetes o software con eso.

dlin
fuente
55
Prefiero comparar los archivos .deb en sistemas derivados de Debian con los archivos .msi para Microsoft Installer ...
MvG
¡eso es correcto! :)
dlin
2

No hay equivalente a la extensión del archivo exe en Windows para indicar que un archivo es ejecutable. En cambio, los archivos ejecutables pueden tener cualquier extensión y, por lo general, no tienen ninguna extensión .

Linux / Unix usa permisos de archivo para indicar si se puede ejecutar un archivo . En concreto, hay una ejecución de permisos de archivo que le dice al sistema que se este archivo permitido para ser ejecutado. Sin embargo, la ausencia de este permiso no indica que el archivo no sea ejecutable; simplemente que el usuario relevante no puede intentar ejecutarlo. Del mismo modo, la presencia de este permiso no siempre indica que el archivo es un ejecutable válido.

Linux / Unix tiene un formato de archivo binario ejecutable llamado ELF que es equivalente a los formatos ejecutables binarios PE (Windows) o MZ / NE (DOS) que generalmente llevan la extensión .exe

Sin embargo, otros tipos de archivos pueden ser ejecutables, dependiendo del shell. Por lo general, si intenta ejecutar un archivo que el sistema no reconoce como ejecutable binario (por ejemplo, formato ELF), el intérprete de shell actual lo interpreta. Esto cumple el mismo efecto que los archivos por lotes en Windows o DOS, excepto que, de nuevo, no es la extensión la que identifica su tipo o cómo ejecutarlo.

Los archivos de shell pueden comenzar opcionalmente con un hashbang (los primeros dos caracteres del archivo van #!seguidos de una ruta a un intérprete), en cuyo caso, en lugar de interpretar el resto del archivo con el intérprete de shell actual, puede iniciar un intérprete de comandos o intérprete alternativo para Ejecuta el archivo. Por lo tanto, puede tener un script en cualquier idioma interpretado y aún así ejecutarlo con el intérprete correcto cuando intente ejecutar el script.

thomasrutter
fuente
Whoah, casi respondo esto también. Mira la fecha, esta publicación es un dinosaurio.
Tamsyn Michael
1

Los archivos EXE y DLL son archivos ejecutables portátiles. Estos se basan en los archivos PE / COFF unix.

Lea http://en.wikipedia.org/wiki/Portable_Executable para obtener más información.

En Ubuntu no tienes una extensión específica para un archivo ejecutable. Estos son generalmente archivos que llevan el nombre de la aplicación con la que también se relacionan.

El factor importante es que estos archivos tienen el conjunto de bits ejecutable. Si tiene un terminal de color, notará que estos son de un color diferente cuando se enumeran usando ls.

En el sistema de archivos unix, los archivos binarios ejecutables generalmente se almacenan en su propia ubicación.

  1. / bin (binarios principales)
  2. / sbin (binarios del sistema)
  3. / usr / bin (binarios de la aplicación)

mientras que otros recursos de la aplicación pueden almacenarse en / usr / lib / o / usr / share /

Un archivo deb corresponde más correctamente a un archivo msi en Windows (es decir, un instalador de paquetes).

Generalmente, los archivos tar.gz o bz2 contienen código fuente desde el cual se puede construir una aplicación

Esmerejón
fuente
0

Ubuntu iguallant del archivo .exe / .com es un archivo sin extensión, por lo general, algunas extensiones como .bin, .run, etc., se agregan por conveniencia

Hay varias alternativas para el archivo .bat (casi todos los archivos), la más popular es .sh

.deb es solo un archivo binario (similar a .msi en Windows) con standerds debian

.tar.gz es solo un formato de archivo común utilizado en ubuntu

Taquiones
fuente
0

Cualquier nombre de archivo se puede configurar como ejecutable independientemente de la extensión, pero el archivo debe tener el conjunto de permisos adecuado. El permiso se puede otorgar haciendo clic con el botón derecho en el archivo en Nautilus, haciendo clic en Propiedades y marcando la casilla de verificación "Permitir ejecutar archivo como programa":

elemento del menú que muestra Ejecutar: -checkbox- Permitir ejecutar el archivo como programa

Terrario
fuente
Me gustaría señalar que cualquier nombre de archivo puede hacerse ejecutable, no cualquier tipo de archivo, como parece indicar la frase "Cualquier archivo". edición para mayor claridad.
Élder Geek
-3

.deb Debian Package para Linux y el archivo TAR comprimido con el algoritmo de compresión GNU zip (gzip) estándar; contiene uno o más archivos comprimidos; comúnmente utilizado en sistemas operativos Unix para empaquetar archivos, programas e instaladores.

NOTA : Los archivos TAR.GZ primero deben descomprimirse y luego expandirse utilizando una utilidad TAR. Incluyen los tipos de archivo .TAR y .GZ.

Shanmugasundharam selvadurai
fuente