*.exe bei linux?

6 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

das ist wirklich kein so leichte Frage.

Grundsätzlich hängt bei Unix-Systemen (Linux zu deren Familie ) die
Ausführbarkeit nicht von irgendwelchen Namen oder Namenserweiterungen ab.

Sobald das execute-Flag einer Datei für den betreffenden User gesetzt ist,
versucht Linux  diese Datei auch auszuführen.

Für Dateien, die du mit den Installations-Werkzeugen installiert hast,
sollte dieses Flag immer sofort gesetz sein. Prüfen kannst du das auf einer
Konsole mit dem Befehl

ls -l

Das Execute-Flag ist das x in den 3 Dreiergruppen -rwx rwx rwx  . Sollte das
x für alle (owner, group, world ->das isnd die 3 Gruppen ) fehlen, wann wird
die Datei nicht ausgeführt.

Andererseits kann man das Fläg für beliebige Dateien setzten und trotzdem   
wird die Datei nicht ausgeführt, denn so eine Datei muss auch ein Programm
sein. Sogenannte Binaries (das sind die Linux-exe-Programme ) haben einen
Header, in dem festgelegt ist was und wie zu tun ist.                       
                                             
Bei Script-Dateien kann man diesen "Header" sogar lesen. Dort sind das die
ersten Zeilen eines Scriptes.  Aber auch die müssen nicht unbedingt sein,   
wenn z.B eine tclsh-Datei mit                                               
                      
/usr/bin/tclsh
     
aufgerufen wird. In diesem falle muss für die Datei   nicht
einmal das x-Flag gesetzt sein, wohl aber für die Datei/usr/bin/tclsh.       
                                                                              
                           

Das ist bei Windows nicht anders, dort kann man auch jede Datei durch       
Umbenennen mit der endung .exe versehen, ohne das sie zum Programm wird.    
                                                                            
                                                     
 

Woher ich das weiß:Berufserfahrung – openSuSE seit 1995

es kommt darauf an, wie die frage gemeint ist .... die ausfuehrbarkeit liegt an gesetzten bit  oder den von einer anderen anwendung zugewiesenen endung.   

Die installation dagegen ist einfach nur in einer speziellen datei gespeichert, die bei einer uebersetztung ... dem make ... angepasst wird und beschreibt wie was wo zu installieren ist.   

Endungen sind bei allen Unixderivaten schall und rauch, allerdings helfen diese bei der zuordnung, einge generelle zuordnung gibt es aber native nicht. In einigen distributionen wird das allerdings etwas restriktiver und analog den microsoft-vorstellungen geregelt und einiges fest vordefiniert. Um es jedoch klar und deutlich zu schreiben, auch bei microsoftprodukten ist die endeung egal, solange das system weiss, was es mit der datei mit der jeweiligen endung tun soll.Eine ausfeuhrbare datei muss also nicht *.exe oder *.bat heissen um ausfuehrbar zu sein

Unter Linux gibt es keine Namenserweiterungen wie .exe (eigentlich gibt es die schon, sie sind aber nicht nötig). Ausführbare Dateien liegen zumeist in den Verzeichnisse /bin, /sbin, /usr/bin und /usr/sbin, des weiteren noch in /usr/games, /usr/local/bin und /usr/local/sbin ("echo $PATH | tr ':' '\n'  " im Terminal eintippen, dann siehst du alle Verzeichnisse mit Programmen/Skripten).

In Linux können alle Dateien ausgeführt werden, deren "Executable Bit" bzw deren http://wiki.ubuntuusers.de/Rechte das erlauben. Ob eine Datei als Shell- oder Pythonscript, Java .jar oder class oder als Pythonscript vorliegt, spielt dabei keine Rolle (auch nicht die Dateiendung). Sie starten sich entweder selbst in der vorgesehenen Umgebung oder müssen von dem entsprechenden Programm gestartet werden (zB `python pyscript.py` oder `./shellscript.sh`). Um einer Datei zu berechtigen, kannst sie im Dateibrowser mit 

Rechtsklick -> Eigenschaften -> Zugriffsrechte -> Ausführen

oder im Terminal mit

chmod +x datei

ausführbar machen. .exe-Dateien, also Windows Portable Executable's, können mit dem Windows-Emulator Wine verarbeitet werden. Es wäre übrigens hilfreich, wenn Du bei Fragen zu "Linux" Deine Distribution(Ubuntu/SuSe/Mint etc) angibst.

 

 

James131  25.03.2011, 01:38

Das problem ist, dass es Distrubutionsunabhaengig gilt, also unter Linux und dessen Distributionen. Damit ist es voellig egel, welche Distribution oder dessen derivat gemeint ist Ubuntu -> Mint ;-) .  

Du musst auch nicht eine endung nutzen um die datei in einer umgebung auszufuehren ... Du kannst problemlos dafinieren, dass zB eine datei BunteBerte.exe unter Perl auszufuehren ist ..... sogar, dass alle *.exe unter perl auszufuehren sind :-D ..... im uebrigen ist es unter MS-Windoes auch moeglich eine datei BunteBerte.sau als installationsdatei zu definieren .... gemeienr noch .... alle *.sau immer als ausfuehrbar zu machen ;-) ....

0
Cypherpunks  25.03.2011, 15:04
@James131

Ja, das habe ich doch geschrieben. Distribution hatte ich wegen Nautilus, Thunar, oder was auch immer erwähnt.

0
OlhiTK  26.03.2011, 14:27

Wine ist kein Emulator. Steht auch im Namen (Wine = Wine is no emulator).

0

Bei Debian Distributionen wäre das dann etwa .deb (wobei man Linux-Distributionen nicht wirklich direkt mit Windows vergleichen kann)

Debian, Ubuntu und auf denen basierende Distributionen nutzen das .deb Paketformat zur Installation der Programme, bei Fedora oder OpenSuse ist es .rpm

 

Man kann keine direkte Installation von z.B skype-linux-install.deb in OpenSuse machen, jedoch kann man die Pakete auch umwandeln (das funktioniert jedoch nicht immer)

Am leichtesten ist es jedoch die Software direkt über die eingebauten Möglichkeiten zu installieren wie z.B bei Ubuntu aus dem Software-Center heraus...

 

 

Meine Antwort bezieht sich hier auf die verschiedenen Linux-Distris, weil Linux selbst nur der Kern (Kernel) ist auf welchem man die verschiedenen benutzbaren Systeme wie Ubuntu eigentlich aufbaut, mit dem eigentlichem Linux kann ein normaler Nutzer nicht so viel anfangen...