Qual é o equivalente a um "arquivo exe"?

47

Não sei qual é a extensão exata do arquivo executável. É .debou .tar.gz?

user54905
fonte
13
Não é uma resposta, mas gostaria de adicionar TUDO no LINUX é um ARQUIVO, portanto, ter extensões como .exe nunca importa.
atenz 26/06
15
@tijybba A filosofia de design "tudo é um arquivo" não tem nenhuma relação com .exeextensões que não são necessárias para executáveis ​​nativos. O primeiro explica o conteúdo de /dev; o último é por causa das permissões de execução e da dependência de examinar o interior de um arquivo para determinar que tipo de arquivo ele é.
Eliah Kagan
@ Eliah Kagan - Era apenas uma informação básica, já que na extensão do Windows é necessária para execução, bem no Linux não é, no que diz respeito às Permissões Executáveis , requer pouco mais Know How of Sudo - Acesso ao usuário e preocupações de segurança subjacentes , que eu imaginei que alguém esclareceria em resposta como parte posterior, se necessário, é por isso que eu o publiquei como comentário, não como resposta.
atenz
4
@tijybba Mas "tudo" sendo um arquivo realmente não tem nada a ver com o tópico desta pergunta, pois não?
Eliah Kagan
2
Eu acho que interpretei mal a parte em questão, que diz "o que é um arquivo exe no Ubuntu?", Considerei Executável , mas agora com a sua grande ajuda, parece que isso significava "o que é um arquivo .exe está no Ubuntu?". Se for altamente inadequado, deixe-me saber que ficaria feliz em excluí-lo (erros são ótimas experiências de aprendizado: D).
atenz

Respostas:

42

Não há extensão de arquivo padrão como um arquivo ".exe" no Windows.

No Linux, quase qualquer arquivo pode ser executável. O final do arquivo apenas descreve (mas não necessariamente) o que ou como um arquivo é "executado".

Por exemplo, um script shell termina com .sh e é "executado" através do shell bash.

Na sua pergunta, você solicita .deb e .tar.gz Bem, o arquivo .deb instala o software no seu sistema (tenha cuidado!) E o arquivo .tar.gz é um arquivo compactado como um .zip que você pode conhecer Janelas.

rechengehirn
fonte
1
Portanto, .deb é um arquivo .exe!
user54905
13
@ Nick, os .debarquivos NÃO costumam ser executáveis: eles não são scripts ELF nem "she-bang" e é improvável que sejam registrados no binfmt. Mesmo com permissões executáveis, o kernel não saberia o que fazer com elas. O fato de o seu explorador de arquivos poder ser registrado para abrir arquivos com um determinado aplicativo com base na extensão não tem nada a ver com o fato de serem executáveis ​​(em termos de permissão de arquivo ou de execução no formato binário do kernel).
de Bruno
4
O arquivo .deb também é mais um arquivo .zip do que um arquivo .exe. O ponto é que o .deb não se executa sozinho , é extraído, interpretado e instalado por algum outro aplicativo.
Rafał Cieślak 26/06
5
Esse outro aplicativo geralmente é o Software Center, que também funciona como instalador. O Linux é menos dependente das extensões em comparação com o Windows e, portanto, decide a executabilidade com base nas permissões, e não na extensão.
tyjkenn
33
.debé mais um .msiarquivo que um .exearquivo.
detly
79

Eu resumiria o sistema da seguinte maneira:

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).

Qualquer arquivo que comece com #!(chamado shebang ou hashbang) na primeira linha é apenas um script. O caminho após o shebang é um caminho para o programa (executável) que precisa analisar o script, supondo que a permissão de execução tenha sido definida no arquivo chmod a+x filename.

Portanto, responda à sua pergunta original, não há extensão ou, raramente, é .elfou .bin.

Isso foi criado no Community Wiki, para que qualquer pessoa possa adicionar uma entrada.

ζ--
fonte
2
Eu nunca vi a extensão .elf, mas vi a extensão .bin com bastante frequência.
Calmarius
1
Enquanto as outras respostas se concentram no fato de que 'qualquer arquivo' pode ser um executável, essa resposta realmente atinge a cabeça, enquanto dizer 'qualquer coisa' pode ser um executável não é realmente informativo ou verdadeiro, mas excepcionalista. Eu poderia renomear qualquer arquivo no Windows para .exe, e ele tentará executá-lo, mas não funcionará necessariamente, no linux é o mesmo, se não for para ser executado, não vai funcionar ... Meu problema muitas vezes está baixando um pacote, e realmente não entendendo o que começar, mas é claro, o rtfm.
TrySpace
Você deve adicionar a extensão .bin (como equivalente ao Windows .exe)
Dani-Br
@ Dani-Br Esta é uma publicação do wiki da comunidade, o que significa que outros são bem-vindos para editá-la, e você tem reputação suficiente para fazê-lo (em 101). Eu adicionei .bin por enquanto.
ζ--
Não é uma extensão, mas foi útil para mim saber que o formato "PE" no Windows é equivalente ao formato "ELF" no pensamento Linux
Accountant
23

O conceito de um executável é diferente no unix / linux e no Windows.

janelas

Qualquer coisa que termine .exeou .comse torne um arquivo executável.

Linux / Unix

Cada arquivo possui um bit executável, portanto, qualquer arquivo pode ser executado, diferente do Windows. Para verificar se um arquivo é executável, você pode verificar suas propriedades (guia Permissões) ou até vê-las marcadas no terminal (todas elas são marcadas com um *).

Até arquivos de texto (como scripts de shell) podem ter seus bits executáveis ​​definidos e serem executados como um.

Nemo
fonte
4
Também vale a pena acrescentar que, no caso de arquivos de texto, o shebang ( #!/bin/bashpor exemplo) no início dos conjuntos de arquivos que programa executa o arquivo.
jackweirdy
Existem bits executáveis ​​separados para usuário, grupo e outros. O uso desses bits pode limitar quem pode executar o programa. Existem bits adicionais para o SUID e o SGID para fazer com que o programa seja executado como o usuário ou grupo que possui o arquivo.
BillThor
Existem algumas imprecisões acima: 2) "todo arquivo tem um bit executável": há três bits executáveis ​​(proprietário, grupo e outros), para que um possa se permitir, mas não outros, executar um arquivo. Há também um bit setuid para "executar como proprietário" e setgid "executar como grupo". 2) "qualquer arquivo pode ser executado": não é assim. os bits de permissão são uma condição necessária, mas insuficiente para executar com êxito um arquivo. Falha de um imediato irá ocorrer, por exemplo, se o arquivo não pode realmente ser carregado e executado (Ref: números de arquivo de mágica man magic, ELF man elf, e linha de hash-bang man execve)
arielf
16

Para descobrir o que um sistema operacional UNIX pensa que é o tipo de arquivo específico, use o comando file:

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

No exemplo acima, eu dou o caminho para o programa 'ls', você substituiria pelo caminho do seu arquivo.

Um arquivo de script seria semelhante a:

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

Um arquivo de texto aleatório:

$ file textfile
textfile: ASCII text

Um arquivo morto:

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

É inteligente o suficiente para identificar corretamente um programa do Windows, se houver um na sua caixa UNIX:

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

E quando não consegue descobrir o que é um arquivo (mas é capaz de abri-lo), chama-o de dados:

$ file myrandom
myrandom: data
Don Simon
fonte
1
Não é realmente uma resposta, mas boa lado- "resposta"
DLIN
11

A execução de arquivos no Linux não está relacionada ao nome ou extensão do arquivo. Qualquer arquivo pode ser executado potencialmente, desde que seja tratado pelo binfmtmecanismo do kernel (e que suas permissões de executável sejam definidas).

O formato mais comum para executável é o ELF , embora alguns kernels possam ser compilados para suportar o a.outformato antigo . (Para detalhes técnicos completos, binfmt_elf.cé onde procurar.)

Outro mecanismo comum é o sistema "Shebang" , manipulado por binfmt_script, que procura #!/path/to/interpreterno início do arquivo.

binfmt_miscpermite o registro de outros manipuladores, conforme documentado aqui .

Se você gosta de fazer um pouco de programação do kernel, pode até escrever sua própria .

Embora não esteja diretamente relacionado, o filecomando deve informar se um arquivo é um executável ELF ou outra coisa.

A convenção de nomenclatura não tem nada a ver com o status executável de um arquivo (exceto quando usado para binfmt_miscregistro). São apenas convenções. Normalmente, um .exearquivo encontrado no Linux pode ser um aplicativo mono , recebendo a .exeextensão como uma convenção vinda do mundo Windows / .Net.

O outro aspecto que pode acontecer quando você deseja "executar" um arquivo é ter a ferramenta exploradora de arquivos que você usa extensões de registro para poder iniciar um programa que abrirá esses arquivos. É o que aconteceria se você clicar duas vezes em um .txt, .tar.gzou .deb, por exemplo: os arquivos não são executáveis ​​nem executados, mas o que você usa para clicar duas vezes escolhe qual executável iniciar para abrir esses arquivos.

Bruno
fonte
Eu acho que isso é melhor como um comentário ao lado de uma das respostas mais inclusivas.
ζ--
@ObsessiveFOSS, mas merece um voto negativo? Ninguém mencionou mono antes do meu answe. Nenhuma resposta aqui realmente fala sobre como os executáveis ​​do Linux realmente funcionam (veja meu comentário sobre o binfmt na resposta aceita) de qualquer maneira.
Bruno
Eu não voto negativo. Eu senti que a votação deveria permanecer como está.
ζ--
@ObsessiveFOSS, não há problema. Também notei que a pergunta foi editada desde que eu a respondi, mudando um pouco o seu significado (eu o entendi inicialmente como "Eu tenho um arquivo exe, não posso executá-lo ...") e diminuindo minha resposta relevante de fato.
Bruno
ESTÁ BEM. Sem problemas.
ζ--
2

No Windows, um arquivo .exe é um arquivo de computador que termina com a extensão ".exe", conhecida como arquivo executável. Quando alguém clica em um arquivo exe, uma rotina interna executa automaticamente o código que pode colocar várias funções em movimento. Arquivos exe são comumente usados ​​para instalar arquivos no sistema operacional Windows.

Além disso, você tem arquivos .tar, conhecidos como arquivos compactados. As versões do Linux, como o Ubuntu, usam recursos de destaque em várias distribuições de software, com a maioria dos códigos-fonte de software disponibilizados no formato tar.gz. gz é uma forma do conhecido formato .tar, usado para arquivamento.

No Ubuntu, por outro lado, o formato de arquivo .deb é o que se comporta mais como o arquivo .exe no Windows. Quando você o abre, o centro de software manipula seu código e instala o programa que ele contém, como um arquivo executável.

Embora você ainda possa instalar software e pacotes a partir do formato de origem (tar.gz), o formato mais adequado para a instalação de software é o .deb one.Tome como exemplo o Ubuntu Software Center; todos os aplicativos que ele contém são de fato arquivos .deb. Em geral, no linux, quase todos os formatos de arquivo (incluindo .deb e tar.gz, bem como os conhecidos arquivos bash .sh) podem se comportar como um arquivo executável. pode instalar pacotes ou software com isso.

dlin
fonte
5
Prefiro comparar os arquivos .deb nos sistemas derivados do Debian com os arquivos .msi do Microsoft Installer ...
MvG
está correto! :)
DLIN
2

Não há equivalente à extensão do arquivo exe no Windows para indicar que um arquivo é executável. Em vez disso, os arquivos executáveis ​​podem ter qualquer extensão e, normalmente, não têm nenhuma extensão .

Linux / Unix usa permissões de arquivo para indicar se um arquivo pode ser executado. Especificamente, há uma permissão de execução de arquivo que informa ao sistema que esse arquivo pode ser executado. No entanto, a ausência dessa permissão não indica que o arquivo não é um executável; apenas que o usuário relevante não está autorizado a tentar executá-lo. Da mesma forma, a presença dessa permissão nem sempre indica que o arquivo é um executável válido.

O Linux / Unix possui um formato de arquivo executável binário chamado ELF, que é equivalente aos formatos executáveis ​​binários PE (Windows) ou MZ / NE (DOS), que geralmente possuem a extensão .exe

No entanto, outros tipos de arquivos podem ser executáveis, dependendo do shell. Normalmente, se você tentar executar um arquivo que o sistema não reconhece como executável binário (por exemplo, formato ELF), ele será interpretado pelo interpretador de shell atual. Isso tem o mesmo efeito que os arquivos em lote no Windows ou DOS, exceto que, novamente, não é a extensão que identifica seu tipo ou como executá-lo.

Os arquivos do shell podem, opcionalmente, começar com um hashbang (os dois primeiros caracteres do arquivo são #!seguidos por um caminho para um intérprete); nesse caso, em vez de interpretar o restante do arquivo com o intérprete do shell atual, ele pode iniciar um shell ou intérprete alternativo para execute o arquivo Portanto, você pode ter um script em qualquer linguagem interpretada e ainda assim executá-lo com o intérprete correto ao tentar executar o script.

thomasrutter
fonte
Whoah, eu quase respondi isso também. Olhe a data, este post é um dinossauro.
Tamsyn Michael
1

Arquivos EXE e DLL são arquivos executáveis ​​portáteis. Estes são baseados nos arquivos unix PE / COFF.

Leia http://en.wikipedia.org/wiki/Portable_Executable para mais informações.

No Ubuntu, você não tem uma extensão específica para um arquivo executável. Geralmente, esses arquivos são nomeados de acordo com o aplicativo e também estão relacionados.

O fator importante é que esses arquivos tenham o conjunto de bits executável. Se você tiver um terminal colorido, notará que essas cores são diferentes quando listadas usando ls.

No sistema de arquivos unix, os arquivos executáveis ​​binários geralmente são armazenados no próprio local.

  1. / bin (binários principais)
  2. / sbin (binários do sistema)
  3. / usr / bin (binários de aplicativos)

enquanto outros recursos de aplicativos podem ser armazenados em / usr / lib / ou / usr / share /

Um arquivo deb corresponde mais corretamente a um arquivo msi no Windows (ou seja, um instalador de pacote).

Geralmente, os arquivos tar.gz ou bz2 contêm código fonte a partir do qual um aplicativo pode ser construído

Merlin
fonte
0

O Ubuntu igual ao arquivo .exe / .com é um arquivo sem extensão, geralmente algumas extensões como .bin, .run etc. são adicionadas a ele por questão de conveniência

Existem várias alternativas para o arquivo .bat (quase todos os arquivos), a mais popular é .sh

.deb é apenas um arquivo binário de arquivamento (semelhante ao .msi no Windows) com debian standerds

.tar.gz é apenas um formato de arquivamento comum usado no ubuntu

Tachyons
fonte
0

Qualquer nome de arquivo pode ser definido como executável, independentemente da extensão, mas o arquivo precisa ter a permissão apropriada definida. A permissão pode ser dada clicando com o botão direito do mouse no arquivo do Nautilus, clicando em Propriedades e marcando a caixa de seleção "Permitir a execução de arquivo como programa":

item de menu mostrando Execute: -checkbox- Permite executar o arquivo como programa

Terrário
fonte
Gostaria de salientar que qualquer nome de arquivo pode ser executável, e não qualquer tipo de arquivo como a frase "Qualquer arquivo" parece indicar. edição para maior clareza.
Elder Geek
-3

.deb Pacote Debian para Linux e arquivo TAR compactado com o algoritmo de compactação GNU zip (gzip) padrão; contém um ou mais arquivos compactados; comumente usado em sistemas operacionais Unix para empacotar arquivos, programas e instaladores.

NOTA : Os arquivos TAR.GZ devem primeiro ser descompactados e depois expandidos usando um utilitário TAR. Eles incluem os tipos de arquivo .TAR e .GZ.

Shanmugasundharam selvadurai
fonte