it-swarm.com.de

Was ist das Linux-Äquivalent zu Windows-Programmdateien?

Unter Windows werden die meisten Anwendungen und Anwendungsdaten in einem speziellen Verzeichnis gespeichert, das als C:\Program Files (und gelegentlich C:\Program Files (x86)) bezeichnet wird. Was ist das Ubuntu/Linux-Äquivalent zu diesem Pfad? Gibt es überhaupt einen?

177
user11154

/bin und /usr/bin sind die Skripte, mit denen die Programme gestartet werden. Das direkte Äquivalent zu "Programmdateien" ist wahrscheinlich /usr/share. Dieses Verzeichnis enthält die verschiedenen Unterstützungsdateien für die meisten Programme.

Nautilus showing /usr/share

Es gibt jedoch wahrscheinlich keine direkte Entsprechung, da beispielsweise Bibliotheksdateien im gesamten System (in /lib) gemeinsam genutzt werden und die Optionen entweder vom Benutzer angegeben (im Basisverzeichnis des Benutzers) oder universell in /etc abgelegt sind.

Wenn Sie also ein Programm über eine Deb-Datei, ein Repository oder einen Build installieren, werden wahrscheinlich Dateien an all diesen Speicherorten abgelegt.

[EDIT] Und wie andere bemerken, gibt es auch /sbin und /usr/sbin. Plus /usr/local/bin, /opt/bin und sogar /usr/games/. Also definitiv kein direkter Vergleich zu c:\program files!

103
Scaine

EDIT: Siehe auch d4nylls Antwort unten für eine exzellente und anfängerfreundliche Karte!

Lesen Sie meine Antwort weiter unten, um mehr darüber zu erfahren, was die Umgebungsvariable PATH ist, was .desktop -Dateien sind und wie Sie mit verschiedenen Linux-Befehlen ein bestimmtes Programm finden.

Ursprüngliche Antwort:


Es gibt keine einfache Antwort.

/bin, /usr/bin und /usr/share

Wie in den anderen Antworten erwähnt, finden Sie die meisten ausführbaren Dateien unter /bin oder /usr/bin, und die Unterstützungsdateien werden in /usr/share installiert.

/usr/local und /opt

Es gibt jedoch mehr Verzeichnisse, in denen Ubuntu Anwendungen installiert. Die Variable PATH, die festlegt, wo nach einem eingegebenen Befehl gesucht werden soll, kann Ihnen einen Hinweis geben, der wie folgt aussieht (echo $PATH in einem Terminal):

/usr/local/cuda/bin:/usr/local/texlive/2012/bin/x86_64-linux:/usr/games:/home/gerhard/bin:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

Wie Sie sehen können, ist einige Software in /usr/local installiert und verfügt über ein eigenes Verzeichnis und bin. Ein weiterer Ort, an dem viele Programme installiert sind, ist /opt. Die Eigenschaften dieser Speicherorte werden durch den Filesystem Hierarchy Standard erläutert, der sehr gut gelesen werden kann. Leider ist der Unterschied zwischen /opt und /usr/local nicht sehr gut erklärt, jemand auf der nix StackExchange hatte eine ausführlichere Erklärung:

  • /usr/local ist ein Ort zum Installieren von Dateien, die vom Administrator erstellt wurden, normalerweise mithilfe des Befehls make. Die Idee ist, Konflikte mit Dateien zu vermeiden, die Teil des Betriebssystems sind und die anderenfalls entweder überschrieben oder die lokalen überschrieben würden. z.B. /usr/bin/foo ist Teil des Betriebssystems, während /usr/local/bin/foo eine lokale Alternative ist.
  • /opt ist ein Verzeichnis zum Installieren entbündelter Pakete in jeweils einem eigenen Unterverzeichnis. Sie bestehen bereits aus kompletten Paketen, die von einem unabhängigen Softwarehändler bereitgestellt werden. Zum Beispiel würde someapp in /opt/someapp installiert, einer seiner Befehle wäre in /opt/someapp/bin/foo [und dann wird normalerweise eine symbolische Verknüpfung in einem der bin -Verzeichnisse in der PATH oder das Programm wird von einer Desktop-Datei aufgerufen (siehe unten)].

Suchen eines bestimmten Programms oder Befehls

.desktop Dateien

Um herauszufinden, wo ein bestimmtes Programm installiert ist, können Sie mehrere Schritte ausführen. Zuerst müssen Sie die Datei .desktop suchen. Desktop-Dateien ähneln Verknüpfungen in Windows, und für Systemanwendungen befinden sie sich in /usr/share/applications. Die Desktop-Dateien für Anwendungen, die nur für den aktuellen Benutzer verfügbar sind, befinden sich in ~/.local/share/applications. Nehmen Sie zum Beispiel Google Chrome, das die Desktop-Datei /usr/share/applications/google-chrome.desktop enthält, und suchen Sie nach der Zeile, die mit Exec= beginnt. Dies bestimmt, wie Google Chrome gestartet wird. Es sagt:

Exec=/opt/google/chrome/google-chrome

Sie wissen also, dass sich Google Chrome in /opt befindet.

Nun zu Mozilla Firefox, das sich in /usr/share/applications/firefox.desktop befindet. Es sagt einfach

Exec=firefox %u

Zuerst scheint das nicht viel zu helfen, aber dann merkt man, dass firefox sich in einem Verzeichnis befinden muss, das sich in der Variablen PATH befindet (höchstwahrscheinlich ein bin), und wir kann es nachschlagen (siehe unten).

Befehle nachschlagen

Zum Nachschlagen von Befehlen können Sie einen oder mehrere der folgenden Befehle verwenden: type, which und whereis (ich habe einen Link zu den entsprechenden Online-Handbuchseiten eingefügt).

  • type : beschreibt einen Befehl und gibt an, wie er interpretiert werden würde, wenn er als Befehlsname verwendet würde. Mögliche Typen für einen Befehl sind:

    1. alias ​​(Shell-Alias)
    2. funktion (Shell-Funktion)
    3. eingebaut (Shell eingebaut)
    4. datei (Festplattendatei)
    5. schlüsselwort (Shell reserviertes Wort)

    (Typ selbst ist eine eingebaute Shell, versuchen Sie es mit type type: P)

    Das Ausführen von type firefox gibt uns

    firefox is /usr/bin/firefox
    

    das wollten wir wissen

Wenn es sich bei einem Befehl um eine Datei handelt (die Sie mit type überprüft haben), können Sie auch Folgendes verwenden:

  • which : zeigt den vollständigen Pfad des Befehls an,

    Das Ausführen von which firefox gibt uns

     /usr/bin/firefox
    
  • whereis : Suchen Sie die Binär-, Quell- und Handbuchdateien für einen Befehl.

    Das Ausführen von whereis firefox gibt uns

    firefox: /usr/bin/firefox /etc/firefox /usr/lib/firefox /usr/lib64/firefox /usr/bin/X11/firefox /usr/share/man/man1/firefox.1.gz
    

Bonus

Sie können /usr/bin/firefox näher mit ls -l /usr/bin/firefox untersuchen und dies ergibt:

/usr/bin/firefox -> ../lib/firefox/firefox.sh*

Es scheint, dass /usr/bin/firefox 'nur' eine symbolische Verknüpfung zum Skript /usr/lib/firefox/firefox.sh ist. Wenn Sie das Skript überprüfen, stellen Sie fest, dass das Skript /usr/lib/firefox/firefox aufruft.
Du kannst jetzt in Frieden ruhen :)

81
Gerhard Burger

Späte Antwort - Ich habe eine Roadmap erstellt, der Anfänger folgen können. Wenn sie nach einer Datei suchen, aber nicht wissen, wo sie suchen sollen, können sie mithilfe der Karte grob navigieren. Sie können eine hochauflösende PNG herunterladen hier . Den dazugehörigen Beitrag finden Sie hier . Ich werde weiterhin sowohl die Datei als auch den Beitrag aktualisieren, wenn es die Zeit erlaubt, und dabei hilfreiche Kommentare einbeziehen.

80
d4nyll

Es gibt kein einzelnes Verzeichnis, das genau dem Ordner Programme entspricht. Die Art und Weise, wie Linux die Dinge arrangiert, unterscheidet sich stark von Windows.

In Windows erhält jedes Programm, das wir installieren, ein eigenes Verzeichnis im Verzeichnis "Programme". In diesem Verzeichnis werden weitere Unterverzeichnisse für verschiedene Arten von Dateien erstellt. Es gibt keine feste Struktur für Unterverzeichnisse. Programme entscheiden für sich, wie sie jedes Verzeichnis aufrufen und wo sie was ablegen möchten.

Bei der Installation eines Programms unter Linux werden jedoch unterschiedliche Dateitypen an unterschiedliche Speicherorte kopiert. Ausführbare Dateien werden nach / usr/bin kopiert, Bibliotheksdateien nach / usr/lib, Dokumentationen nach / usr/man, - / usr/info und / usr/doc. Wenn Konfigurationsdateien vorhanden sind, befinden sie sich normalerweise im Basisverzeichnis des Benutzers oder in / etc.

18
binW

Der Ordner C:\Program Files wäre /usr/bin in Ubuntu. /bin sieht eher aus wie C:\windows.

Aus der Handbuchseite der Dateisystemhierarchie :

/bin      This directory contains executable programs which are needed  in
          single user mode and to bring the system up or repair it.
/usr/bin
          This is the primary directory  for  executable  programs.   Most
          programs  executed  by  normal  users  which  are not needed for
          booting or for repairing the system and which are not  installed
          locally should be placed in this directory.

Ubuntu hat eine andere Struktur als Windows. Ubuntu legt fast alle Anwendungen in einem Verzeichnis ab, sagen wir /usr/bin. Windows erstellt einen neuen Ordner, beispielsweise Mozilla Firefox, und fügt darin Konfigurationen, ausführbare Dateien, DLLs, Bilder usw. hinzu. Ubuntu teilt sie auf, ausführbare Dateien gehen in /usr/bin, systemweite Konfiguration in /etc, gemeinsam genutzte Objekte in /usr/lib, Bilder in /usr/share, ...

10
Lekensteyn

Linux-Programmdateien befinden sich in der gesamten Hierarchie. Es könnte sich auf /usr/bin, /bin, /opt/... oder in einem anderen Verzeichnis befinden.

Ich glaube, Sie werden eine Datei finden, die mit Ihrer Bewerbung zusammenhängt. Dann habe ich eine Idee, wie Dateien aussehen, die bei der Programminstallation installiert werden.

  1. Installieren Sie synaptic, indem Sie Sudo apt-get install synaptic auf dem Terminal ausgeben.
  2. Suchen Sie nach dem gewünschten Paket und suchen Sie in der Texteingabe.
  3. Klicken Sie mit der rechten Maustaste auf das Paket und wählen Sie Properties aus.
  4. Wechseln Sie zur Registerkarte Installed File. Das Ergebnis ist dasselbe wie dpkg -L package_name.
  5. Dort finden Sie alle für das Paket installierten Dateien.

Dies liegt daran, dass Linux die installierte Datei je nach Typ in separate Verzeichnisse verschiebt.

  • Ausführbare Datei wechselt zu /usr/bin oder /bin.
  • Das Symbol wechselt zu /usr/share/icons oder zu ~/.local/share/icons für local.
  • Ganze Anwendung (portabel) auf /opt.
  • Verknüpfung normalerweise auf /usr/share/applications oder auf ~/.local/share/applications
  • Dokumentation zu /usr/share/doc
  • Bibliothek/Modul auf /usr/lib

Und viele andere Verzeichnisse. (CMIIW, Korrektur wird akzeptiert)

5
Abdillah

Die Art und Weise, wie Linux- und Windows-Programme installiert werden, ist sehr unterschiedlich.

Das in Windows gebräuchliche Muster gilt für ein Programm. oder eine Reihe von Programmen eines Herstellers in ein eigenes Unterverzeichnis in C:\programs\vendor o.ä.

Unter Linux werden Ihre Dateien je nach Funktion auf bestimmte Unterverzeichnisse aufgeteilt. Es gibt Verzeichnisse für Bibliotheken, Symbole, Manpages, Protokolldateien, Konfiguration usw. Sie können einige davon verwenden, aber das System verwaltet alle. Sie sind nicht miteinander gekoppelt, sondern existieren zusammen mit ähnlichen Dateien aus anderen Programmen.

Es gibt also kein echtes Äquivalent zu dieser Windows-Verzeichnisstruktur in einer regulären Linux-Implementierung.

3
user unknown

In dieser Antwort meine ich, wenn ich Unix sage, sowohl Unix als auch Unix-ähnliche Betriebssysteme.

Ubuntu hat nicht wirklich einen Programmordner, der alle Daten für jedes Programm enthält. In Unix- und Unix-ähnlichen Betriebssystemen ist ALLES eine Datei, auch die Terminalbefehle. Das sind auch Dateien. Die Art und Weise, wie Unix mit Programmen umgeht, kann ziemlich chaotisch und gleichzeitig organisiert sein.

Symbole für Programme werden in/usr/share/icons/* gespeichert, ausführbare Programme werden normalerweise in/usr/bin,/bin und an anderen Stellen mit bin-Verzeichnissen gespeichert (bin ist die Abkürzung für binary). Bibliotheken, von denen Programme abhängig sind, befinden sich in/lib.

Sie haben also nicht ein Verzeichnis, das alle Daten für ein Programm enthält, sondern die Daten für das Programm verteilt. Dies scheint zunächst sehr unorganisiert zu sein, ermöglicht jedoch die gemeinsame Nutzung von Standardelementen wie Bibliotheken und Symbolen.

Dank der Berechtigungen für jede Datei ist die Vorstellung, dass alles eine Datei ist, sehr brillant, um ehrlich zu sein. Es macht Unix VIEL sicherer als andere Betriebssysteme.

3
Thomas Boxley

Wenn Sie eigene Programme installieren, empfehle ich 1 Ordner:

2
Timo