Qual è l'equivalente di un "file exe"?


47

Non so quale sia l'esatta estensione del file eseguibile. È .debo .tar.gz?


13
Non è una risposta, ma vorrei aggiungere TUTTO in LINUX è un FILE, quindi avere estensioni come .exe non ha mai importanza.
atenz,

15
@tijybba La filosofia di progettazione "tutto è un file" è totalmente estranea alle .exeestensioni non necessarie per gli eseguibili nativi. Il primo spiega il contenuto di /dev; quest'ultimo è a causa delle autorizzazioni di esecuzione e della dipendenza dall'esaminare l'interno di un file per determinare che tipo di file è.
Eliah Kagan,

@ Eliah Kagan - Era solo un'informazione di base poiché nell'estensione di Windows è necessaria per l'esecuzione, anche in Linux non lo è, per quanto riguarda le autorizzazioni eseguibili , richiede poco più Know How of Sudo -Aser Access e Underlaid , che immaginavo che qualcuno avrebbe chiarito in risposta come ultima parte, se assolutamente necessario è per questo che l'ho pubblicato come commento, non una risposta.
atenz,

4
@tijybba Ma "tutto" essere un file non ha nulla a che fare con l'argomento di questa domanda, vero?
Eliah Kagan,

2
Immagino di aver letto male quella parte in questione, che dice "cos'è un file exe in Ubuntu?", Ho considerato eseguibile , ma ora con il tuo ansioso aiuto sembra significare "cos'è un file .exe in Ubuntu?". Se è altamente inappropriato, fammi sapere che sarei felice di eliminarlo (gli errori sono grandi esperienze di apprendimento: D).
atenz,

Risposte:


42

Non esiste un'estensione di file standard come un file ".exe" in Windows.

Su Linux è possibile eseguire quasi tutti i file. La fine del file descrive (ma non necessariamente) cosa o come "un file" viene eseguito.

Ad esempio uno script di shell termina con .sh e viene "eseguito" tramite la shell bash.

Nella tua domanda chiedi .deb e .tar.gz Bene, il file .deb installa il software sul tuo sistema (fai attenzione!) E il file .tar.gz è un file compresso come un .zip che potresti conoscere da Finestre.


1
Quindi, .deb è un file .exe!
user54905,

13
@Nick, i .debfile NON tendono ad essere eseguibili: non sono né script ELF né "she-bang" e è improbabile che siano registrati con binfmt. Anche con permessi eseguibili, il kernel non saprebbe cosa farne. Il fatto che il tuo esploratore di file possa essere registrato per aprire file con una determinata applicazione basata sull'estensione non ha nulla a che fare con il loro eseguibile (in termini di autorizzazione dei file o in termini di esecuzione del formato binario del kernel).
Bruno,

4
Il file .deb è anche più simile a un .zip che a un .exe. Il punto è che .deb non si esegue da solo , viene estratto, interpretato e installato da un'altra applicazione.
Rafał Cieślak,

5
Quell'altra applicazione è in genere il Software Center, che funge anche da programma di installazione. Linux dipende meno dalle estensioni rispetto a Windows e quindi decide eseguibilità in base alle autorizzazioni anziché all'estensione.
Tyjkenn,

33
.debè più simile a un .msifile che a un .exefile.
detenere il

79

Riassumerei il sistema nel modo seguente:

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

Qualsiasi file che inizia con #!(chiamato shebang o hashbang) sulla prima riga è solo uno script. Il percorso dopo lo shebang è un percorso del programma (eseguibile) che deve analizzare lo script, presupponendo che l'autorizzazione di esecuzione sia stata impostata sul file con chmod a+x filename.

Pertanto, rispondi alla tua domanda originale, non esiste alcuna estensione o, raramente, lo è .elfo .bin.

Questo è stato reso Community Wiki, quindi chiunque può aggiungere una voce.


2
Non ho mai visto l'estensione .elf, ma ho visto l'estensione .bin abbastanza spesso.
Calmarius,

1
Mentre le altre risposte si concentrano sul fatto che "qualsiasi" file può essere un eseguibile, questa risposta colpisce davvero la testa, mentre dire "qualsiasi cosa" può essere un eseguibile non è realmente informativo o vero, ma piuttosto eccezionale. Potrei rinominare qualsiasi file su Windows in .exe e proverò ad eseguirlo, ma non funzionerà necessariamente, in Linux è lo stesso, se non è pensato per essere eseguito, non funzionerà ... Il mio problema molte volte sta scaricando un pacchetto e non capendo davvero cosa iniziare, ma ovviamente, rtfm.
TrySpace

Dovresti aggiungere l'estensione .bin (come Windows equivalente a .exe)
Dani-Br

@ Dani-Br Questo è un post wiki della community, il che significa che altri sono invitati a modificarlo e hai abbastanza reputazione per farlo (a 101). Ho aggiunto .bin per ora.
ζ--

Non è un'estensione, ma mi è stato utile sapere che il formato "PE" su Windows è l'equivalente del formato "ELF" sul pensiero Linux
Accountant م

23

Il concetto di eseguibile è diverso in unix / linux rispetto a Windows.

finestre

Tutto ciò che termina .exeo .comdiventa un file eseguibile.

Linux / Unix

Ogni file ha un bit eseguibile, quindi qualsiasi file può essere eseguito, a differenza di Windows. Per vedere se un file è eseguibile, puoi verificarne le proprietà (scheda Autorizzazioni) o persino vederli contrassegnati nel terminale (sono tutti contrassegnati con un *).

Anche i file di testo (come gli script di shell) possono avere i loro bit eseguibili impostati ed essere eseguiti come uno.


4
vale anche la pena aggiungere che nel caso di file di testo, shebang ( #!/bin/bashad esempio) all'inizio dei file imposta quale programma esegue il file.
jackweirdy,

Esistono bit eseguibili separati per utente, gruppo e altro. L'uso di questi bit può limitare chi può eseguire il programma. Esistono bit aggiuntivi per SUID e SGID per far funzionare il programma come l'utente o il gruppo proprietario del file.
BillThor,

Ci sono alcune inesattezze sopra: 2) "ogni file ha un bit eseguibile": ci sono tre bit eseguibili (proprietario, gruppo e altri), quindi uno può permettersi, ma non altri, di eseguire un file. C'è anche un bit setuid per "execute-as-owner" e setgid "execute-as-group". 2) "qualsiasi file può essere eseguito": non è così. i bit di autorizzazione sono una condizione necessaria ma insufficiente per eseguire correttamente un file. Ad esempio, si verificherà un errore immediato se il file non può essere effettivamente caricato ed eseguito (Rif: numeri magici file man magic, ELF man elfe linea hash-bang man execve)
circa

16

Per scoprire cosa pensa un sistema operativo UNIX del tipo di un determinato file, utilizzare il comando file:

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

Nell'esempio sopra, do il percorso al programma 'ls', che sostituiresti con il percorso del tuo file.

Un file di script sarebbe simile a:

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

Un file di testo casuale:

$ file textfile
textfile: ASCII text

Un file di archivio:

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

È anche abbastanza intelligente da identificare correttamente un programma Windows, se ti capita di trovarne uno in giro sulla tua scatola UNIX:

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

E quando non riesce a capire cosa sia un file (ma è in grado di aprirlo), lo chiama dati:

$ file myrandom
myrandom: data

1
Non proprio una risposta, ma una buona "risposta"
laterale

11

L'esecuzione di file su Linux non è affatto correlata al nome o all'estensione del file. Qualsiasi file può potenzialmente essere eseguito, a condizione che sia gestito dal binfmtmeccanismo del kernel (e che siano impostate le sue autorizzazioni eseguibili).

Il formato più comune per eseguibile è ELF , sebbene alcuni kernel possano essere compilati per il supporto del vecchio a.outformato. (Per i dettagli tecnici completi, binfmt_elf.cè dove cercare.)

Un altro meccanismo comune è il sistema "Shebang" , gestito da binfmt_script, che cerca #!/path/to/interpreterall'inizio del file.

binfmt_miscconsente la registrazione di altri gestori, come documentato qui .

Se ti va di fare un po 'di programmazione del kernel, puoi persino scrivere il tuo .

Sebbene non sia direttamente correlato, il filecomando dovrebbe indicare se un file è un eseguibile ELF o qualcos'altro.

La convenzione di denominazione non ha nulla a che fare con lo stato eseguibile di un file (tranne quando viene utilizzato per la binfmt_miscregistrazione). Sono solo convenzioni. In genere, un .exefile trovato su Linux potrebbe essere un'applicazione mono , ottenendo l' .exeestensione come convenzione proveniente dal mondo Windows / .Net.

L'altro aspetto che può accadere quando si desidera "eseguire" un file è avere lo strumento Esplora file che si utilizza le estensioni di registro per poter avviare un programma che aprirà questi file. Questo è ciò che accadrebbe se si fa doppio clic su un .txt, .tar.gzo .deb, ad esempio: i file non sono eseguibili né eseguiti, ma ciò che si utilizza per fare doppio clic sceglie quale eseguibile avviare per aprire questi file.


Penso che questo sia meglio come un commento sul lato di una delle risposte più inclusive.
ζ--

@ObsessiveFOSS, ma merita un downvote? Nessuno aveva menzionato mono prima della mia risposta. Nessuna risposta qui parla davvero di come funzionano davvero gli eseguibili Linux (vedi il mio commento su binfmt sulla risposta accettata).
Bruno,

Non ho votato a fondo. Ho ritenuto che il voto dovesse rimanere così com'è.
ζ--

@ObsessiveFOSS, nessun problema. Ho anche notato che la domanda era stata modificata da quando ho risposto, cambiando un po 'il suo significato (l'ho capito inizialmente come "Ho un file exe, non posso eseguirlo ...") e rendendo meno la mia risposta rilevante davvero.
Bruno,

OK. Nessun problema.
ζ--

2

In Windows, un file .exe è un file di computer che termina con l'estensione ".exe" comunemente noto come file eseguibile. Quando si fa clic su un file exe, una routine integrata esegue automaticamente il codice che può attivare diverse funzioni. I file exe sono comunemente usati per installare i file nel sistema operativo Windows.

Inoltre, hai file .tar, comunemente noti come file compressi. Le versioni di Linux, come Ubuntu, utilizzano le funzionalità in modo prominente in varie distribuzioni di software, con la maggior parte del codice sorgente del software reso disponibile nel formato tar.gz. Da cui puoi supporre che tar. gz è una forma del ben noto formato .tar, che viene utilizzato per l'archiviazione.

In Ubuntu, invece, il formato del file .deb è quello che si comporta più come il file .exe in Windows. Quando lo apri, il centro software gestisce il suo codice e installa il programma che contiene, come un file eseguibile.

Anche se è ancora possibile installare software e pacchetti dal formato sorgente (tar.gz), il formato più adatto per l'installazione di software è quello .deb. Prendiamo ad esempio Ubuntu Software Center; tutte le applicazioni in esso contenute sono in realtà file .deb. In generale, in Linux, quasi tutti i formati di file (inclusi .deb e tar.gz e i ben noti file bash .sh) possono comportarsi come un file eseguibile in modo da poter può installare pacchetti o software con quello.


5
Preferirei confrontare i file .deb sui sistemi derivati ​​da Debian con i file .msi per Microsoft Installer ...
MvG

è corretto! :)
dlin,

2

Non esiste un equivalente dell'estensione del file exe in Windows per indicare che un file è eseguibile. Invece, i file eseguibili possono avere qualsiasi estensione e in genere non hanno alcuna estensione .

Linux / Unix utilizza le autorizzazioni dei file per indicare se un file può essere eseguito. In particolare, esiste un'autorizzazione per eseguire il file che dice al sistema che è possibile eseguire questo file . Tuttavia, l'assenza di questa autorizzazione non indica che il file non è un eseguibile; semplicemente che all'utente interessato non è consentito provare a eseguirlo. Allo stesso modo la presenza di questa autorizzazione non indica sempre che il file è un eseguibile valido.

Linux / Unix ha un formato di file eseguibile binario chiamato ELF che è equivalente ai formati eseguibili binari PE (Windows) o MZ / NE (DOS) che di solito portano l'estensione .exe

Tuttavia, altri tipi di file possono essere eseguibili, a seconda della shell. In genere, se si tenta di eseguire un file che il sistema non riconosce come eseguibile binario (ad es. Formato ELF), viene interpretato dall'interprete shell corrente. Ciò soddisfa lo stesso effetto dei file batch in Windows o DOS, tranne che di nuovo, non è l'estensione che identifica il suo tipo o come eseguirlo.

I file shell possono facoltativamente iniziare con un hashbang (i primi due caratteri nel file sono #!seguiti da un percorso per un interprete), nel qual caso invece di interpretare il resto del file con l'interprete shell corrente, può lanciare una shell alternativa o un interprete a eseguire il file. Pertanto, è possibile avere uno script in qualsiasi linguaggio interpretato e farlo comunque funzionare con l'interprete corretto quando si tenta di eseguire lo script.


Ehi, ho quasi risposto anche a questo. Guarda la data, questo post è un dinosauro.
Tamsyn Michael,

1

I file EXE e DLL sono file eseguibili portatili. Questi sono basati sui file unix PE / COFF.

Leggi http://en.wikipedia.org/wiki/Portable_Executable per ulteriori informazioni.

In Ubuntu non hai un'estensione specifica per un file eseguibile. Questi sono generalmente file che prendono il nome dall'applicazione a cui si riferiscono.

Il fattore importante è che questi file hanno il bit eseguibile impostato. Se si dispone di un terminale a colori, si noterà che questi sono di colore diverso quando elencati utilizzando ls.

Nel file system unix i file eseguibili binari sono generalmente memorizzati nella loro posizione.

  1. / bin (file binari principali)
  2. / sbin (file binari di sistema)
  3. / usr / bin (file binari dell'applicazione)

mentre altre risorse dell'applicazione possono essere archiviate in / usr / lib / o / usr / share /

Un file deb è più correttamente corrispondente a un file msi in Windows (ovvero un programma di installazione del pacchetto).

Generalmente i file tar.gz o i file bz2 contengono il codice sorgente da cui è possibile creare un'applicazione


0

Ubuntu equivalente al file .exe / .com è un file senza estensione, di solito vengono aggiunte alcune estensioni come .bin, .run ecc. Per la covinienza

ci sono diverse alternative per il file .bat (quasi tutti i file), il più popolare è .sh

.deb è solo un archivio di file binari (simile a .msi in Windows) con debian standerds

.tar.gz è solo un formato di archiviazione comune usato in Ubuntu


0

Qualsiasi nome file può essere impostato su eseguibile indipendentemente dall'estensione, ma è necessario che il file disponga dell'autorizzazione appropriata. L'autorizzazione può essere concessa facendo clic con il pulsante destro del mouse sul file in Nautilus, facendo clic su Proprietà e selezionando la casella di controllo "Consenti esecuzione file come programma":

voce di menu che mostra Esegui: -checkbox- Consenti l'esecuzione del file come programma


Vorrei sottolineare che qualsiasi nome file può essere reso eseguibile, non qualsiasi tipo di file come sembra indicare la frase "Qualsiasi file". editing per chiarezza.
Elder Geek,

-3

.deb Pacchetto Debian per l'archivio Linux e TAR compresso con l'algoritmo di compressione standard GNU zip (gzip); contiene uno o più file compressi; comunemente usato sui sistemi operativi Unix per impacchettare file, programmi e programmi di installazione.

NOTA : i file TAR.GZ devono prima essere decompressi e quindi espansi utilizzando un'utilità TAR. Includono entrambi i tipi di file .TAR e .GZ.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.