Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free, no registration required.

I don't know what the exact executable file extension is. Is it .deb or .tar.gz? Can anyone on Ask Ubuntu help?

share|improve this question
Not an answer but would like to add EVERYTHING in LINUX is a FILE so having Extensions as .exe never matters. –  atenz Jun 26 '12 at 19:23
@tijybba The "everything is a file" design philosophy is totally unrelated to .exe extensions not being needed for native executables. The former explains the contents of /dev; the latter is because of execute permissions and reliance on examining the inside of a file to determine what kind of file it is. –  Eliah Kagan Jun 26 '12 at 20:57
@ Eliah Kagan - It was just a basic info since In Windows extension is necessary for execution , well in Linux it ain't , as far as Executable Permissions is concerned , it requires little more Know How of Sudo -User Access and Underlaid security concerns, which i guessed someone would clarify in answer as its latter part ,if at all needed that's why i posted it as comment not an answer. –  atenz Jun 26 '12 at 21:13
@tijybba But "everything" being a file doesn't really have anything to do with the topic of this question, does it? –  Eliah Kagan Jun 26 '12 at 23:18
I guess i misread that part in question , which says " what is a exe file is in Ubuntu?", i considered Executable, but now with your eager help it seems it meant " what is a .exe file is in Ubuntu? ". If it is highly inappropriate , let me know i would be glad to delete it .( Mistakes are great learning experiences:D ). –  atenz Jun 27 '12 at 5:49

8 Answers 8

up vote 19 down vote accepted

There is no standard File-Extention like an ".exe" file in Windows.

On Linux nearly any file can be executable. The file ending just describes (but not necessarily) what or how a file is "executed".

For example a shell script ends with .sh and is "executed" via the bash shell.

In your question you ask for .deb and .tar.gz Well, the .deb file installs software on your system (Please be careful!) And the .tar.gz file is a compressed file like a .zip that you could know from Windows.

share|improve this answer
So, .deb is a .exe file! –  user54905 Jun 26 '12 at 20:14
@Nick, .deb files tend NOT to be executables: they're neither ELF nor "she-bang" scripts and they're unlikely to be registered with binfmt. Even with executable permissions, the kernel wouldn't know what to do with them. The fact that your file explorer can be registered to open files with a certain application based on the extension has nothing to do with them being executable (in terms of file permission or in terms of kernel binary format execution). –  Bruno Jun 26 '12 at 21:02
.deb file is also more like a .zip then like an .exe. The point is that .deb does not execute itself, it is extracted, interpreted and installed by some other application. –  Rafał Cieślak Jun 26 '12 at 21:23
That other application usually being the Software Center, which doubles as an installer. Linux is less dependent on extensions compared to Windows and therefore decides executability based on permissions rather than extension. –  tyjkenn Jun 27 '12 at 0:18
.deb is more like a .msi file than a .exe file. –  detly Jun 27 '12 at 4:28

The concept of an executable is different in unix/linux than Windows.


Anything that ends in .exe or .com becomes an executable file.


Each and every file has an executable bit, so any file can be executed, unlike Windows. To see if a file is executable, you can check its properties (Permissions tab), or even see them marked in the terminal (they are all marked with a *).

Even text files (like shell scripts) can have their executable bits set, and be run as one.

share|improve this answer
also worth adding that in the case of text files, the shebang (#!/bin/bash for example) at the start of the file sets which program executes the file. –  jackweirdy Jun 26 '12 at 19:32
Separate executable bits exist for user, group, and other. Use of these bits can limit who can execute the program. Additional bits exist for SUID and SGID to cause the program to run as the user or group that owns the file. –  BillThor Jun 27 '12 at 3:03

I would summarize the system in the following way:

Linux extension    |Windows Equivalent    |Short description
.so, .o            | .dll                 | Object that can be loaded in(Like a DLL)
[none], .elf(rare) | .exe, .com(rare)     | Linux executables
.sh                | .bat                 | Shell script
.exe               | .exe                 | Mono application
.deb               | .msi                 | Installer package(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.
.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.

Any file that starts with #!(called a shebang or hashbang) on the first line is just a script. The path after the shebang is a path to the program (executable) that needs to parse the script, assuming that the execute permission has been set on the file with chmod a+x filename.

Therefore, answer your original question, there is no extension, or rarely, it is .elf.

This has been made Community Wiki, so anyone can add an entry.

share|improve this answer
I've never seen the .elf extension but saw .bin extension quite often. –  Calmarius Aug 22 '14 at 21:36

To find out what a UNIX operating system thinks a particular file's type is, you use the file command:

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

In the above example, I give the path to the program 'ls', you would replace with the path of your file.

A script file would look like:

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

A random text file:

$ file textfile
textfile: ASCII text

An archive file:

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

It is even smart enough to correctly identify a windows program, should you happen to have one lying around on your UNIX box:

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

And when it can't figure out what a file is (but is able to open it), it calls it data:

$ file myrandom
myrandom: data
share|improve this answer
Not really an answer,but good side-"answer" –  Nickolas Jun 26 '12 at 19:37

File execution on Linux isn't related at all to the file name or extension. Any file can potentially be executed, provided that it's handled by the kernel's binfmt mechanism (and that its executable permissions are set).

The most common format for executable is ELF, although some kernels can be compiled for support of the old a.out format. (For full technical details, binfmt_elf.c is where to look.)

Another common mechanism is the "Shebang" system, handled by binfmt_script, which looks for #!/path/to/interpreter at the beginning of the file.

binfmt_misc allows for the registration of other handlers, as documented here.

If you fancy doing a bit of kernel programming, you can even write your own.

Although not directly related, the file command should tell you whether a file is an ELF executable or something else.

The naming convention has nothing to do with the executable status of a file (except when it's used for binfmt_misc registration). They're just conventions. Typically, a .exe file found on Linux could be a mono application, getting the .exe extension as a convention coming from the Windows/.Net world.

The other aspect that can happen when you want to "run" a file is to have the file explorer tool that you use register extensions to be able to launch a program that will open these files. This is what would happen if you double click on a .txt, .tar.gz or .deb, for example: the files are not executables nor executed, but what you use to double-click chooses which executable to launch to open these files.

share|improve this answer
I think this is better as a comment on the side of one of the more-inclusive answers. –  hexafraction Aug 13 '12 at 12:27
@ObsessiveFOSS, but does it deserve a downvote? No one had mentioned mono before my answe. No answer here really talks about how Linux executables really work (see my comment about binfmt on the accepted answer) anyway. –  Bruno Aug 13 '12 at 13:03
I did not downvote. I felt as the vote should stay as is. –  hexafraction Aug 13 '12 at 13:04
@ObsessiveFOSS, no problem. I've also noticed that the question had been edited since I answered it, changing a bit its meaning (I understood it initially as "I have an exe file, I can't run it...") and making my answer less relevant indeed. –  Bruno Aug 13 '12 at 13:09
OK. No problem. –  hexafraction Aug 13 '12 at 13:11

In windows, an .exe file is a computer file that ends with the extension ".exe" commonly known as executable file. When one clicks on an exe file, a built-in routine automatically executes code that can set several functions into motion. Exe files are commonly used to install files in the windows operating system.

Additionally, you have .tar files,commonly known as compressed files.Linux versions, such as Ubuntu use features prominently in various software distributions, with most software source code made available in the tar.gz format .From that you can assume that tar.gz is a form of the well know .tar format, which is used for archiving.

In Ubuntu on the other hand, the .deb file format is the one that behaves more like the .exe file in windows.When you open it the software center handles it's code and installs the program it contains, such as an executable file.

Even though you can still install software and packages from source format ( tar.gz), the best suited format for installing software is the .deb one.Take as example the Ubuntu Software Center; all the applications it contains are in fact .deb files.In general, in linux, almost every file format(including .deb and tar.gz as well as the well know bash files .sh) can behave as an executable file so that you can install packages or software with that.

share|improve this answer
I'd rather compare the .deb files on Debian-derived systems to the .msi files for Microsoft Installer… –  MvG Jun 26 '12 at 19:42
that IS correct! :) –  Nickolas Jun 26 '12 at 20:23

EXE and DLL files are portable executable files. These are based on the PE/COFF unix files.

Read http://en.wikipedia.org/wiki/Portable_Executable for more information.

In Ubuntu you don't have a specific extension for an executable file. These are generally files that are named after the application they relate too.

The important factor is that these files have the executable bit set. If you have a color terminal you will notice that these are a different color when listed using ls.

In the unix file system binary executable files are generally stored in there own location.

  1. /bin (core binaries)
  2. /sbin (system binaries)
  3. /usr/bin (application binaries)

whereas other application resources may be stored in /usr/lib/ or /usr/share/

A deb file is more correctly corresponded to an msi file in windows (i.e a package installer).

Generally tar.gz files or bz2 files contain source code from which an application can be built

share|improve this answer

Ubuntu equallant of .exe / .com file is extensionless file, usually some extensions like .bin ,.run etc are added to it for covinience

there are several alternatives for .bat file(almost all files),the most popular one is .sh

.deb is just an archive binary files(similar to .msi in windows) with debian standerds

.tar.gz is just a common archiving format used in ubuntu

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.