Co jest równoważne „plikowi exe”?

47

Nie wiem, jakie jest dokładne rozszerzenie pliku wykonywalnego. Czy to .debczy .tar.gz?

użytkownik54905
źródło
13
Brak odpowiedzi, ale chciałbym dodać WSZYSTKO w LINUX jest PLIKEM, więc rozszerzenie jako .exe nigdy nie ma znaczenia.
atenz
15
@tijybba Filozofia projektowania „wszystko jest plikiem” jest całkowicie niezwiązana z .exerozszerzeniami niepotrzebnymi dla natywnych plików wykonywalnych. Pierwszy wyjaśnia treść /dev; ten ostatni wynika z uprawnień do wykonywania i polegania na badaniu wnętrza pliku w celu ustalenia, jaki to plik.
Eliah Kagan
@ Eliah Kagan - To była tylko podstawowa informacja, ponieważ w systemie Windows rozszerzenie jest konieczne do wykonania, cóż, w Linuksie tak nie jest, jeśli chodzi o uprawnienia do plików wykonywalnych , to wymaga niewiele więcej wiedzy na temat Sudo -User Access i obaw związanych z bezpieczeństwem , który, jak sądzę, ktoś wyjaśniłby w odpowiedzi jako jego drugą część, jeśli w ogóle będzie potrzebny, dlatego opublikowałem go jako komentarz, a nie odpowiedź.
atenz
4
@tijybba Ale „wszystko” będąc plikiem tak naprawdę nie ma nic wspólnego z tematem tego pytania, prawda?
Eliah Kagan
2
Wydaje mi się, że źle odczytałem tę część, która mówi „co to jest plik exe w Ubuntu?”, Uważałem , że jest wykonywalny , ale teraz z twoją niecierpliwą pomocą wydaje się, że oznaczało to „co to jest plik .exe w Ubuntu?”. Jeśli jest to bardzo nieodpowiednie, daj mi znać, chętnie go usunę. (Błędy to świetne doświadczenia edukacyjne: D).
atenz

Odpowiedzi:

42

W systemie Windows nie ma standardowego rozszerzenia plików, takiego jak plik „.exe”.

W systemie Linux prawie każdy plik może być wykonywalny. Koniec pliku opisuje (ale niekoniecznie) co lub jak plik jest „wykonywany”.

Na przykład skrypt powłoki kończy się na .sh i jest „wykonywany” przez powłokę bash.

W pytaniu pytasz o .deb i .tar.gz Cóż, plik .deb instaluje oprogramowanie w twoim systemie (Uwaga!). A .tar.gz to skompresowany plik jak .zip, który możesz znać z Windows

rechengehirn
źródło
1
.Deb to plik .exe!
user54905
13
@Nick, .debpliki NIE są zazwyczaj plikami wykonywalnymi: nie są to skrypty ELF ani „she-bang” i jest mało prawdopodobne, aby zostały zarejestrowane w binfmt. Nawet przy wykonywalnych uprawnieniach jądro nie wiedziałoby, co z nimi zrobić. Fakt, że eksplorator plików może być zarejestrowany w celu otwierania plików za pomocą określonej aplikacji opartej na rozszerzeniu, nie ma nic wspólnego z ich wykonalnością (pod względem uprawnień do plików lub wykonania formatu binarnego jądra).
Bruno
4
Plik .deb jest również bardziej podobny do .zip niż do pliku .exe. Chodzi o to, że .deb nie wykonuje się sam , jest wyodrębniany, interpretowany i instalowany przez inną aplikację.
Rafał Cieślak
5
Inną aplikacją jest zwykle Software Center, które pełni również funkcję instalatora. Linux jest mniej zależny od rozszerzeń niż Windows i dlatego decyduje o wykonywalności na podstawie uprawnień, a nie rozszerzenia.
tyjkenn
33
.debjest bardziej jak .msiplik niż .exeplik.
detly
79

Podsumowałbym system w następujący sposób:

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

Każdy plik, który zaczyna się od #!(zwany shebang lub hashbang) w pierwszym wierszu, jest tylko skryptem. Ścieżka po shebang to ścieżka do programu (wykonywalnego), który musi przeanalizować skrypt, przy założeniu, że dla pliku ustawiono uprawnienia do wykonywania chmod a+x filename.

Dlatego odpowiedz na swoje pierwotne pytanie, nie ma rozszerzenia lub rzadko jest to .elflub .bin.

Zostało to Wiki Wiki, więc każdy może dodać wpis.

ζ--
źródło
2
Nigdy nie widziałem rozszerzenia .elf, ale dość często widziałem rozszerzenie .bin.
Calmarius
1
Podczas gdy inne odpowiedzi koncentrują się na fakcie, że „dowolny” plik może być plikiem wykonywalnym, ta odpowiedź naprawdę uderza w sedno, podczas gdy powiedzenie „wszystko” może być plikiem wykonywalnym, nie jest tak naprawdę pouczające ani prawdziwe, ale raczej wyjątkowe. Mógłbym zmienić nazwę dowolnego pliku w systemie Windows na .exe, a on spróbuje go wykonać, ale niekoniecznie będzie działał, w systemie Linux jest taki sam, jeśli nie jest przeznaczony do wykonania, nie będzie działał ... Mój problem wiele razy pobiera pakiet i nie bardzo rozumiem od czego zacząć, ale oczywiście rtfm.
TrySpace
Należy dodać rozszerzenie .bin (jako odpowiednik systemu Windows dla .exe)
Dani-Br
@ Dani-Br To jest post na wiki społeczności, co oznacza, że ​​inni mogą go edytować i masz wystarczającą reputację (101). Na razie dodałem .bin.
ζ--
To nie jest rozszerzenie, ale warto było wiedzieć, że format „PE” w systemie Windows jest równoważny formatowi „ELF” w systemie Linux
Księgowy م
23

Koncepcja pliku wykonywalnego jest inna w systemach Unix / Linux niż Windows.

Windows

Wszystko, co kończy się .exelub .comstaje się plikiem wykonywalnym.

Linux / Unix

Każdy plik ma bit wykonywalny, więc każdy plik może zostać wykonany, w przeciwieństwie do systemu Windows. Aby sprawdzić, czy plik jest wykonywalny, możesz sprawdzić jego właściwości (karta Uprawnienia), a nawet zobaczyć je zaznaczone w terminalu (wszystkie są oznaczone *).

Nawet pliki tekstowe (takie jak skrypty powłoki) mogą mieć ustawione bity wykonywalne i działać jako jeden.

Nemo
źródło
4
warto również dodać, że w przypadku plików tekstowych shebang ( #!/bin/bashna przykład) na początku zestawów plików, który program wykonuje plik.
jackweirdy
Istnieją oddzielne bity wykonywalne dla użytkownika, grupy i innych. Użycie tych bitów może ograniczyć, kto może uruchomić program. Istnieją dodatkowe bity dla SUID i SGID, które powodują, że program działa jako użytkownik lub grupa, która jest właścicielem pliku.
BillThor
Istnieją pewne niedokładności powyżej: 2) „każdy plik ma bit wykonywalny”: istnieją trzy bity wykonywalne (właściciel, grupa i inne), więc można pozwolić sobie, ale nie innym, na wykonanie pliku. Jest też bit setuid do „execute-as-owner” i setgid „execute-as-group”. 2) „można wykonać dowolny plik”: nie tak. bity uprawnień są wymaganym, ale niewystarczającym warunkiem do pomyślnego wykonania pliku. Natychmiastowa awaria wystąpi na przykład, jeśli pliku nie można faktycznie załadować i uruchomić (zob .: magiczne numery plików man magic, ELF man elfi linia haszowania man execve)
arielf
16

Aby dowiedzieć się, co system operacyjny UNIX uważa za dany typ pliku, użyj polecenia file:

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

W powyższym przykładzie podaję ścieżkę do programu „ls”, zastąpiłbyś ścieżkę swojego pliku.

Plik skryptu wyglądałby następująco:

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

Losowy plik tekstowy:

$ file textfile
textfile: ASCII text

Plik archiwum:

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

Jest nawet wystarczająco inteligentny, aby poprawnie zidentyfikować program systemu Windows, jeśli zdarzy się, że masz go w swoim systemie UNIX:

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

A kiedy nie może dowiedzieć się, co to jest plik (ale jest w stanie go otworzyć), nazywa go danymi:

$ file myrandom
myrandom: data
Don Simon
źródło
1
Nie do
końca
11

Wykonanie pliku w systemie Linux nie jest w ogóle powiązane z nazwą lub rozszerzeniem pliku. Każdy plik może zostać potencjalnie wykonany, pod warunkiem, że jest on obsługiwany przez binfmtmechanizm jądra (i ustawione są jego uprawnienia do wykonywania).

Najpopularniejszym formatem pliku wykonywalnego jest ELF , chociaż niektóre jądra można skompilować w celu obsługi starego a.outformatu. (Aby uzyskać szczegółowe informacje techniczne, binfmt_elf.cgdzie szukać).

Innym powszechnym mechanizmem jest obsługiwany przez system „Shebang”binfmt_script , który szuka #!/path/to/interpreterna początku pliku.

binfmt_miscpozwala na rejestrację innych osób zajmujących się obsługą, jak tu udokumentowano .

Jeśli masz ochotę na trochę programowania jądra, możesz nawet napisać własny .

Chociaż nie jest to bezpośrednio powiązane, filepolecenie powinno powiedzieć, czy plik jest plikiem wykonywalnym ELF, czy czymś innym.

Konwencja nazewnictwa nie ma nic wspólnego ze statusem pliku (z wyjątkiem sytuacji, gdy jest on używany do binfmt_miscrejestracji). To tylko konwencje. Zazwyczaj .exeplik znaleziony w systemie Linux może być aplikacją mono , uzyskując .exerozszerzenie jako konwencję pochodzącą ze świata Windows / .Net.

Innym aspektem, który może się zdarzyć, gdy chcesz „uruchomić” plik, jest posiadanie narzędzia eksploratora plików, którego używasz rozszerzeń rejestrów, aby móc uruchomić program, który otworzy te pliki. To jest to, co by się stało, jeśli podwójne kliknięcie na .txt, .tar.gzlub .deb, na przykład: pliki wykonywalne, ani nie są wykonywane, ale to, czego używasz dwukrotne kliknięcie wybiera, które wykonywalny do uruchomienia, aby otworzyć te pliki.

Bruno
źródło
Myślę, że lepiej to jako komentarz po jednej z bardziej wyczerpujących odpowiedzi.
ζ--
@ObsessiveFOSS, ale czy zasługuje na opinię? Nikt nie wspominał o mono przed moją odpowiedzią. Żadna odpowiedź tutaj tak naprawdę nie mówi o tym, jak naprawdę działają pliki wykonywalne Linuksa (zobacz mój komentarz na temat binfmt na temat przyjętej odpowiedzi).
Bruno,
Nie przegłosowałem. Czułem, że głosowanie powinno zostać bez zmian.
ζ--
@ObsessiveFOSS, nie ma problemu. Zauważyłem też, że pytanie zostało zredagowane, odkąd na nie odpowiedziałem, zmieniając nieco jego znaczenie (początkowo rozumiałem je jako „Mam plik exe, nie mogę go uruchomić ...”) i zmniejszając moją odpowiedź istotnie istotne.
Bruno,
DOBRZE. Nie ma problemu.
ζ--
2

W systemie Windows plik .exe to plik komputerowy, który kończy się rozszerzeniem „.exe” powszechnie znanym jako plik wykonywalny. Po kliknięciu pliku exe wbudowana procedura automatycznie wykonuje kod, który może uruchomić kilka funkcji. Pliki exe są powszechnie używane do instalowania plików w systemie operacyjnym Windows.

Dodatkowo masz pliki .tar, powszechnie znane jako pliki skompresowane. Wersje Linux, takie jak Ubuntu, wykorzystują funkcje w różnych dystrybucjach oprogramowania, a większość kodu źródłowego oprogramowania jest dostępna w formacie tar.gz. Od tego możesz założyć tę tar. gz jest formą dobrze znanego formatu .tar, który służy do archiwizacji.

Z drugiej strony w Ubuntu format pliku .deb zachowuje się bardziej jak plik .exe w systemie Windows. Po otwarciu centrum oprogramowania obsługuje kod i instaluje program, który zawiera, na przykład plik wykonywalny.

Mimo że nadal możesz instalować oprogramowanie i pakiety z formatu źródłowego (tar.gz), najlepszym formatem do instalowania oprogramowania jest .deb. Weź jako przykład Centrum oprogramowania Ubuntu; wszystkie zawarte w nim aplikacje to w rzeczywistości pliki .deb. Ogólnie w systemie Linux prawie każdy format pliku (w tym .deb i tar.gz oraz dobrze znane pliki bash .sh) mogą zachowywać się jak pliki wykonywalne, dzięki czemu dzięki temu można instalować pakiety lub oprogramowanie.

dlin
źródło
5
Wolę porównać pliki .deb w systemach pochodnych Debiana z plikami .msi dla Microsoft Installer…
MvG
to jest poprawne! :)
dlin
2

W systemie Windows nie ma odpowiednika rozszerzenia pliku exe wskazującego, że plik jest wykonywalny. Zamiast tego pliki wykonywalne mogą mieć dowolne rozszerzenie i zwykle nie mają w ogóle rozszerzenia .

Linux / Unix używa uprawnień do plików, aby wskazać, czy plik może zostać wykonany. W szczególności istnieje uprawnienie do wykonywania pliku, które informuje system, że ten plik może zostać wykonany. Jednak brak tego uprawnienia nie oznacza, że ​​plik nie jest plikiem wykonywalnym; tylko, że odpowiedni użytkownik nie może spróbować go wykonać. Podobnie obecność tego uprawnienia nie zawsze oznacza, że ​​plik jest prawidłowym plikiem wykonywalnym.

Linux / Unix ma binarny format pliku wykonywalnego o nazwie ELF, który jest równoważny binarnym formatom plików wykonywalnych PE (Windows) lub MZ / NE (DOS), które zwykle mają rozszerzenie .exe

Jednak inne typy plików mogą być wykonywalne, w zależności od powłoki. Zazwyczaj, jeśli próbujesz wykonać plik, którego system nie rozpoznaje jako binarny plik wykonywalny (np. Format ELF), wówczas jest on interpretowany przez bieżący interpreter powłoki. Spełnia to ten sam efekt, co pliki wsadowe w systemie Windows lub DOS, z tym wyjątkiem, że to nie rozszerzenie identyfikuje jego typ ani sposób jego wykonania.

Pliki powłoki mogą opcjonalnie zaczynać się hashbangiem (po pierwszych dwóch znakach w pliku #!następuje ścieżka do interpretera), w którym to przypadku zamiast interpretować resztę pliku za pomocą bieżącego interpretera powłoki, może uruchomić alternatywną powłokę lub interpreter w celu uruchom plik. Tak więc możesz mieć skrypt w dowolnym tłumaczonym języku i nadal uruchamiać go z poprawnym tłumaczem podczas próby wykonania skryptu.

thomasrutter
źródło
Zaraz też prawie na to odpowiedziałem. Spójrz na datę, ten post to dinozaur.
Tamsyn Michael,
1

Pliki EXE i DLL są przenośnymi plikami wykonywalnymi. Są one oparte na plikach unix PE / COFF.

Przeczytaj http://en.wikipedia.org/wiki/Portable_Executable, aby uzyskać więcej informacji.

W Ubuntu nie masz określonego rozszerzenia pliku wykonywalnego. Są to zazwyczaj pliki, które są nazwane na podstawie powiązanej z nimi aplikacji.

Ważnym czynnikiem jest to, że pliki te mają ustawiony bit wykonywalny. Jeśli masz kolorowy terminal, zauważysz, że są one w innym kolorze, gdy są wymienione za pomocą ls.

W systemie plików unix binarne pliki wykonywalne są zazwyczaj przechowywane w ich własnej lokalizacji.

  1. / bin (podstawowe pliki binarne)
  2. / sbin (binaria systemowe)
  3. / usr / bin (pliki binarne aplikacji)

podczas gdy inne zasoby aplikacji mogą być przechowywane w / usr / lib / lub / usr / share /

Plik deb bardziej poprawnie odpowiada plikowi MSI w systemie Windows (tj. Instalatorowi pakietów).

Zasadniczo pliki tar.gz lub bz2 zawierają kod źródłowy, z którego można zbudować aplikację

Merlin
źródło
0

Ubuntu equallant pliku .exe / .com to plik bez rozszerzeń, zwykle niektóre rozszerzenia, takie jak .bin, .run itp. Są do niego dodawane dla wygody

istnieje kilka alternatyw dla pliku .bat (prawie wszystkie pliki), najbardziej popularnym jest .sh

.deb to tylko archiwalne pliki binarne (podobne do .msi w systemie Windows) ze standardami Debiana

.tar.gz to tylko popularny format archiwizacji używany w Ubuntu

Tachyony
źródło
0

Każda nazwa pliku może być ustawiona na wykonywalną niezależnie od rozszerzenia, ale plik musi mieć odpowiednie uprawnienia. Zezwolenie można uzyskać, klikając prawym przyciskiem myszy plik w Nautilusie, klikając Właściwości i zaznaczając pole wyboru „Zezwalaj na uruchamianie pliku jako programu”:

pozycja menu pokazuje Wykonaj: -checkbox- Zezwól na wykonywanie pliku jako programu

Terrarian
źródło
Chciałbym zaznaczyć, że dowolna nazwa pliku może być wykonywalna, a nie jakikolwiek typ pliku, jak wydaje się wskazywać zwrot „Any file”. edycja dla jasności.
Elder Geek
-3

.deb Pakiet Debian dla Linuksa i archiwum TAR skompresowane standardowym algorytmem kompresji GNU zip (gzip); zawiera jeden lub więcej skompresowanych plików; powszechnie używane w systemach operacyjnych Unix do pakowania plików, programów i instalatorów.

UWAGA : Pliki TAR.GZ muszą najpierw zostać zdekompresowane, a następnie rozszerzone za pomocą narzędzia TAR. Obejmują one zarówno typy plików .TAR, jak i .GZ.

Shanmugasundharam selvadurai
źródło