Bir "exe dosyasının" eşdeğeri nedir?


47

Tam olarak yürütülebilir dosya uzantısının ne olduğunu bilmiyorum. Öyle mi .debyoksa .tar.gz?


13
Cevap değil ama LINUX içindeki HER ŞEYİ eklemek istersiniz, bu yüzden bir uzantıdır .
atenz

15
@tijybba tasarım felsefesi olan "her şey bir dosyadır" tamamen ilgisiz için .exeyerli yürütülebilir için gerekli olan uzantı. İlki, içeriğini açıklar /dev; İkincisi, yürütme izinleri ve ne tür bir dosya olduğunu belirlemek için bir dosyanın içini incelemeye güvenmesidir.
Eliah Kagan

@ Eliah Kagan - Windows eklentisinde yürütme için gerekli olduğundan, yalnızca Linux'ta, Yürütülebilir İzinler söz konusu olduğunda, Sudo-Kullanıcı Erişimi ve Underlaid güvenlik kaygılarının ne kadar az olduğunu bilmesi gerektiği için basit bir bilgidir. Birisi son kısmı olarak cevabını açıklığa kavuşturacağını tahmin etmiştim, eğer gerekliyse bu yüzden bir cevap değil yorum olarak gönderdim.
atenz

4
@tijybba Ama "her şey" bir dosya olmak gerçekten bu sorunun konusu ile ilgisi yok, değil mi?
Eliah Kagan

2
Sanırım " Exe dosyası nedir Ubuntu'da?" Diyen söz konusu kısmı yanlış okudum, Çalıştırılabilir olarak kabul ettim , ancak şimdi istekli yardımınızla birlikte " .exe dosyası ne olur ?" Eğer son derece uygunsuzsa, onu silmekten mutluluk duyacağımı söyleyin (Hatalar harika öğrenme deneyimleri: D).
atenz,

Yanıtlar:


42

Windows'taki bir ".exe" dosyası gibi standart bir Dosya Uzantısı yoktur.

Linux'ta neredeyse her dosya çalıştırılabilir. Biten dosya sadece bir dosyanın "nasıl" yürütüldüğünü açıklar (ancak zorunlu değil).

Örneğin, bir kabuk betiği .sh ile biter ve bash kabuğu üzerinden "yürütülür".

Sorunuzda .deb ve .tar.gz isteyin. Eh, .deb dosyası sisteminize yazılım yükler (lütfen dikkatli olun!) Ve .tar.gz dosyası, bildiğiniz bir .zip gibi sıkıştırılmış bir dosyadır. Pencereler.


1
Yani, .deb bir .exe dosyasıdır!
user54905,

13
@Hayır, .debdosyalar çalıştırılabilir olma eğilimindedir: ne ELF ne de "she-bang" betiği değildir ve binfmt'ye kayıtlı olmaları olası değildir. Çalıştırılabilir izinlerle bile, çekirdek onlarla ne yapacağını bilemez. Dosya gezgininizin, uzantıyı temel alan belirli bir uygulamaya sahip dosyaları açmak için kaydedilebildiği gerçeği, yürütülebilir olmaları ile (dosya izni veya çekirdek ikili biçim yürütme anlamında) ilgili değildir.
Bruno

4
.deb dosyası ayrıca .zip'e, sonra bir .exe'ye benzer. Mesele şu ki, .deb kendini çalıştırmaz , başka bir uygulama tarafından çıkarılır, yorumlanır ve kurulur.
Rafał Cieślak

5
Bu diğer uygulama genellikle bir yükleyici olarak ikiye katlanan Yazılım Merkezi'dir. Linux, Windows'a göre uzantılara daha az bağımlıdır ve bu nedenle, uzantı yerine izinlere dayanarak çalıştırılabilirliğe karar verir.
tyjkenn

33
.debbir .msidosyadan çok bir .exedosya gibidir.
12'de 04:28

79

Sistemi şu şekilde özetlerdim:

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

#!İlk satırda başlayan (bir shebang veya hashbang denilen) herhangi bir dosya sadece bir betiktir. Shebang'dan sonraki yol , dosyada yürütme izninin ayarlandığını varsayarak , betiği ayrıştırması gereken programın (yürütülebilir) bir yoludur .chmod a+x filename

Bu nedenle, orijinal sorunuza cevap verin, uzatma yok veya nadiren, .elfya da öyle .bin.

Bu, Topluluk Wiki'si yapıldı, böylece herkes bir giriş ekleyebilir.


2
.Elf uzantısını hiç görmedim ancak .bin uzantısını çok sık gördüm.
Calmarius

1
Diğer cevaplar 'herhangi bir' dosyanın çalıştırılabilir olabileceği gerçeğine odaklanırken, bu cevap kafanın üstüne çiviyi vuruyor, oysa 'herhangi bir şeyin çalıştırılabilir olabileceğini söylemek gerçekten bilgilendirici ya da gerçek değil, istisnai değil. Windows'taki herhangi bir dosyayı .exe olarak yeniden adlandırabilirim ve onu çalıştırmayı deneyecek, ancak mutlaka çalışmayacak, linux'da aynı, eğer çalıştırılmayacaksa, çalışmayacak ... Sorunum bir çok kez bir paket indiriyor ve gerçekten ne başlayacağının farkında değil, fakat elbette rtfm.
TrySpace

.Bin uzantısını eklemelisiniz (Windows .exe'e eşdeğer olarak)
Dani-Br

@ Dani-Br Bu bir topluluk-wiki yazısıdır, yani başkalarının düzenleyebileceği anlamına gelir ve bunu yapacak kadar ününüz vardır (101'de). Şimdilik .bin ekledim.
15'te

Bu bir uzantı değildir, ancak Windows'taki "PE" formatının Linux düşüncesindeki "ELF" formatına eşdeğer olduğunu bilmek benim için yararlı oldu
Muhasebe Danışmanı

23

Bir çalıştırılabilir kavramı, unix / linux'ta Windows'tan farklıdır.

pencereler

Biten .exeveya .comyürütülebilir bir dosya haline gelen her şey .

Linux / Unix

Her dosyanın çalıştırılabilir bir biti vardır, bu nedenle herhangi bir dosya Windows'un aksine çalıştırılabilir. Bir dosyanın çalıştırılabilir olup olmadığını görmek için özelliklerini kontrol edebilir (İzinler sekmesi), hatta terminalde işaretlenmiş bile görebilirsiniz (hepsi bir * ile işaretlenmiştir).

Metin dosyaları bile (kabuk komut dosyaları gibi) yürütülebilir bitlerini ayarlayabilir ve tek olarak çalıştırılabilir.


4
Ayrıca, metin dosyalarında, #!/bin/bashdosyanın başlangıcındaki Shebang'ın ( örneğin), dosyayı çalıştıran program kümelerini eklemeye değer olduğunu da eklemeye değer .
jackweirdy

Kullanıcı, grup ve diğer kullanıcılar için ayrı çalıştırılabilir bitler bulunur. Bu bitlerin kullanımı, programı kimin yürütebileceğini sınırlayabilir. SUID ve SGID için, programın dosyanın sahibi olan kullanıcı veya grup olarak çalışmasına neden olması için ek bitler vardır.
BillThor

Yukarıdaki bazı yanlışlıklar var: 2) "her dosyanın çalıştırılabilir bir biti var": üç çalıştırılabilir bit (sahip, grup ve diğerleri) var, bu nedenle biri kendisinin değil başkalarının bir dosyayı yürütmesine izin verebilir. Ayrıca "sahip olarak yürüt" ve "grup olarak yürüt" ayarlanmış bir setuid bit vardır. 2) "herhangi bir dosya çalıştırılabilir": öyle değil. izin bitleri bir dosyayı başarılı bir şekilde yürütmek için gerekli ancak yetersiz bir durumdur. Örneğin bir dosya gerçekten yüklenip çalıştırılamıyorsa hemen bir hata oluşacaktır (Ref: dosya sihirli sayıları man magic, ELF man elfve hash-bang satırı man execve)
arielf

16

Bir UNIX işletim sisteminin belirli bir dosyanın türünün ne olduğunu düşündüğünü öğrenmek için, file komutunu kullanırsınız:

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

Yukarıdaki örnekte, 'ls' programının yolunu veriyorum, bunun yerine dosyanın yolunu değiştirirsiniz.

Bir komut dosyası dosyası şöyle görünür:

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

Rasgele bir metin dosyası:

$ file textfile
textfile: ASCII text

Bir arşiv dosyası:

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

Bir Windows programını doğru bir şekilde tanımlayabilecek kadar bile akıllıdır, UNIX kutunuzda bir tane varken:

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

Ve bir dosyanın ne olduğunu çözemediğinde (ancak onu açabilir), veriyi çağırır:

$ file myrandom
myrandom: data

1
Gerçekten bir cevap değil, ama iyi
tarafı-

11

Linux'ta dosya yürütme, dosya adı veya uzantısı ile ilgili değildir. Herhangi bir dosya, çekirdek binfmtmekanizması tarafından işlenmesi koşuluyla (ve çalıştırılabilir izinlerinin ayarlanması koşuluyla ) yürütülebilir.

Yürütülebilirlik için en yaygın format ELF'dir , ancak bazı a.outformatlar eski formatı desteklemek için derlenebilir . (Tüm teknik detaylar binfmt_elf.ciçin nereye bakılacağıdır.)

Başka bir ortak mekanizmadır "shebang" tarafından ele sistem, binfmt_scriptarar, #!/path/to/interpreterdosyasının başında.

binfmt_miscBurada belirtilen diğer işleyicilerin kaydedilmesine izin verir .

Biraz çekirdek programlama yapmaktan hoşlanıyorsanız, kendinizinkini bile yazabilirsiniz .

Doğrudan ilişkili olmasa da, filekomut size bir dosyanın ELF tarafından çalıştırılabilir veya başka bir şey olup olmadığını bildirmelidir.

Adlandırma kuralının, bir dosyanın çalıştırılabilir durumuyla ( binfmt_misckayıt için kullanıldığı durumlar hariç) hiçbir ilgisi yoktur . Onlar sadece sözleşmeler. Genellikle, .exeLinux'ta bulunan bir dosya , uzantıyı Windows / .Net dünyasından gelen bir kongre olarak alan tek bir uygulama olabilir .exe.

Bir dosyayı "çalıştırmak" istediğiniz zaman ortaya çıkabilecek diğer bir husus da, bu dosyaları açacak bir programı başlatabilmek için kayıt uzantılarını kullandığınız dosya gezgini aracına sahip olmaktır. Bu üzerinde eğer çift tıklayın ne olacağını ise .txt, .tar.gzya .debörneğin: dosyalar yürütülebilir ne de idam değil, ne kullanmak bu dosyaları açmak için başlatmak için yürütülebilir kendi istediğim çift tıklamanız.


Ben daha kapsayıcı cevaplardan birinin tarafında bir yorum olarak daha iyi olduğunu düşünüyorum.
27'de

@ObsessiveFOSS, ancak bir aşağı oy hak ediyor mu? Cevabımdan önce kimse monodan bahsetmedi. Burada hiçbir cevap gerçekten Linux çalıştırılabilirlerinin gerçekten nasıl çalıştığı hakkında konuşmuyor (kabul edilen cevap üzerine binfmt hakkındaki yorumuma bakın).
Bruno,

Oy kullanmadım Oyların olduğu gibi kalması gerektiğini hissettim.
Ağustos'ta

@ÖzleyiciFOSS, sorun değil. Ayrıca, soruyu cevapladığımdan beri değiştirildiğini de farkettim, anlamını biraz değiştirdim (başlangıçta "bir exe dosyasına sahibim, çalıştıramıyorum ..." olarak anladım) ve cevabımı daha az yaptım gerçekten alakalı.
Bruno,

TAMAM. Sorun değil.
12'de

2

Windows'ta bir .exe dosyası, genellikle çalıştırılabilir dosya olarak bilinen ".exe" uzantılı bir bilgisayar dosyasıdır. Bir exe dosyasına tıklandığında, yerleşik bir rutin otomatik olarak birkaç işlevi harekete geçiren kodu çalıştırır. Exe dosyaları genellikle Windows işletim sistemine dosya yüklemek için kullanılır.

Ek olarak, genellikle sıkıştırılmış dosyalar olarak bilinen .tar dosyalarınız vardır. Ubuntu gibi Linux sürümleri, tar.gz biçiminde kullanıma sunulan çoğu yazılım kaynak koduyla birlikte, çeşitli yazılım dağıtımlarında belirgin özellikler kullanır. gz, arşivleme için kullanılan iyi bilinen .tar biçiminin bir şeklidir.

Diğer yandan Ubuntu'da, .deb dosya formatı Windows'taki .exe dosyası gibi davranan formattır. Yazılım merkezi açtığınızda kodunu kullanır ve çalıştırılabilir bir dosya gibi içerdiği programı yükler.

Yazılımı ve paketleri hala kaynak biçiminden (tar.gz) yükleyebilseniz de, yazılımı yüklemek için en uygun biçim .deb one.Take Ubuntu Software Center; içerdiği tüm uygulamalar aslında .deb dosyalarıdır. Genel olarak, linux'ta hemen hemen her dosya formatı (.deb ve tar.gz ve iyi bilinen bash dosyaları .sh dahil), çalıştırılabilir bir dosya gibi davranabilir. Bununla paket veya yazılım kurabilir.


5
Debian'dan türetilmiş sistemlerdeki .deb dosyalarını Microsoft Installer için .msi dosyalarıyla karşılaştırmayı tercih ederim…
MvG

bu doğru! :)
dlin

2

Bir dosyanın çalıştırılabilir olduğunu belirtmek için Windows'taki exe dosya uzantısına eşdeğer yoktur . Bunun yerine, yürütülebilir dosyalar herhangi bir uzantıya sahip olabilir ve genellikle hiçbir uzantıya sahip değildir .

Linux / Unix kullanan dosya izinlerini bir dosya olmadığını belirtmek için olabilir yürütülecek. Özellikle, sisteme bu dosyanın yürütülmesine izin verildiğini bildiren bir yürütme dosyası izni vardır . Ancak, bu iznin yokluğu dosyanın çalıştırılabilir olmadığını göstermez; yalnızca ilgili kullanıcının uygulamayı yürütmeye çalışmasına izin verilmemektedir . Benzer şekilde, bu iznin varlığı her zaman dosyanın geçerli bir çalıştırılabilir olduğunu göstermez.

Linux / Unix, genellikle .exe uzantısını taşıyan PE (Windows) veya MZ / NE (DOS) ikili çalıştırılabilir formatlarına eşdeğer olan ELF adlı bir ikili çalıştırılabilir dosya formatına sahiptir.

Ancak, kabuğa bağlı olarak diğer dosya türleri yürütülebilir olabilir. Tipik olarak, sistemin bir ikili çalıştırılabilir dosya (örneğin, ELF formatı) olarak tanımadığı bir dosyayı çalıştırmayı denerseniz, geçerli kabuk yorumlayıcısı tarafından yorumlanır. Bu , Windows veya DOS'taki toplu iş dosyalarıyla aynı etkiyi gerçekleştirir; bunun dışında, türünü tanımlayan uzantı değildir veya nasıl yürütülür.

Kabuk dosyaları isteğe bağlı olarak bir hashbang ile başlayabilir (dosyanın ilk iki karakteri #!ardından bir tercümana giden yol), bu durumda dosyanın geri kalanını geçerli kabuk tercümanı ile yorumlamak yerine, alternatif bir kabuk veya tercüman başlatabilir. dosyayı yürütün. Böylece, herhangi bir yorumlanmış dilde bir komut dosyasına sahip olabilir ve komut dosyasını çalıştırmaya çalışırken yine de doğru tercümanla çalışmasını sağlayabilirsiniz.


Whoah, ben de buna neredeyse cevap verdim. Tarihe bak, bu yazı bir dinozor.
Tamsyn Michael,

1

EXE ve DLL dosyaları taşınabilir yürütülebilir dosyalardır. Bunlar PE / COFF unix dosyalarına dayanır.

Daha fazla bilgi için http://en.wikipedia.org/wiki/Portable_Executable adresini okuyun .

Ubuntu'da yürütülebilir bir dosya için belirli bir uzantınız yoktur. Bunlar genellikle ilgili oldukları uygulamadan sonra isimlendirilmiş dosyalardır.

Önemli faktör, bu dosyaların çalıştırılabilir bit ayarına sahip olmasıdır. Bir renk terminaliniz varsa, bunların kullanıldığında listelendiğinde farklı bir renk olduğunu fark edeceksiniz ls.

Unix dosya sisteminde, ikili çalıştırılabilir dosyalar genellikle orada kendi konumlarında depolanır.

  1. / bin (çekirdek ikili dosyalar)
  2. / sbin (sistem ikili dosyaları)
  3. / usr / bin (uygulama ikili dosyaları)

Diğer uygulama kaynakları / usr / lib / veya / usr / share / 'de saklanabilir.

Bir deb dosyası, pencerelerdeki bir msi dosyasına (yani bir paket yükleyici) daha doğru karşılık gelir.

Genellikle tar.gz dosyaları veya bz2 dosyaları, bir uygulamanın oluşturulabileceği kaynak kodu içerir.


0

.Exe / .com dosyasının Ubuntu equallant'ı, uzantısız bir dosyadır, genellikle .bin, .run vb. Gibi bazı uzantılar da beraberlik için eklenir.

.bat dosyası için birkaç alternatif var (hemen hemen tüm dosyalar), en popüler olanı .sh

.deb sadece debian başlıklarına sahip bir arşiv ikili dosyasıdır (Windows'ta .msi'ye benzer)

.tar.gz, ubuntu'da kullanılan ortak bir arşivleme biçimidir.


0

Herhangi bir dosya adı, uzantıya bakmaksızın çalıştırılabilir olarak ayarlanabilir, ancak dosyanın uygun izin kümesine sahip olması gerekir. İzin Nautilus'taki dosyaya sağ tıklayarak, Özellikler'e tıklayıp "Dosyayı program olarak yürütmeye izin ver" onay kutusunu işaretleyerek izin verilebilir:

Execute: -checkbox- Dosyayı program olarak çalıştırmaya izin veren menü öğesi


Herhangi bir dosya adının çalıştırılabilir duruma getirilebileceğini, "Herhangi bir dosya" ifadesi olarak belirtilen herhangi bir dosya türünün belirtilmediğini belirtmek isterim . netlik için düzenleme.
Elder Geek

-3

Linux ve TAR arşivleri için standart Debu Paketi (GNU zip (gzip) sıkıştırma algoritmasıyla sıkıştırılmış); bir veya daha fazla sıkıştırılmış dosya içerir; Unix işletim sistemlerinde yaygın olarak dosyaları, programları ve yükleyicileri paketlemek için kullanılır.

NOT : TAR.GZ dosyalarının önce sıkıştırılmaması ve ardından bir TAR yardımcı programı kullanılarak genişletilmesi gerekir. Her ikisi de .TAR ve .GZ dosya türlerini içerir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.