GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie erkennen idiomatische Unix-Programme, unter welchem ​​Präfix sie installiert sind?

Wenn ich eine Binärdatei mit einem nicht standardmäßigen Präfix installiere, z. /opt/bin/foo , die einige statische Dateien aus /opt/share/foo benötigt , wie findet es sie? Verwenden von Rückverweisen relativ zur ausführbaren Datei (../share/foo )? Zur Kompilierzeit fest codiert?

Was ist die Idiomatik Möglichkeit für eine Anwendung, mit dem variablen Installationspräfix umzugehen? Sollen alle Verzeichnisse vorangestellt werden? (was ist mit /var ?)

Akzeptierte Antwort:

Es ist üblich, solche Referenzen zur Kompilierzeit fest zu codieren und möglicherweise eine Befehlszeilenoption oder Umgebungsvariable bereitzustellen, um die Standardeinstellung zur Kompilierzeit zu überschreiben. Oft merkt sich das Programm nur den Speicherort einer Konfigurationsdatei (normalerweise unter /etc ), wo alle Standardeinstellungen zur Kompilierzeit überschrieben werden können. Dieser Ansatz ist am sinnvollsten für Open-Source-Software, die von denselben Leuten kompiliert wird, die das Betriebssystem als Teil einer Linux-Distribution oder BSD-Portierungen erstellen.

Bei Anwendungen, die in binärer Form verteilt werden, besteht der übliche Ansatz darin, die Anwendungsbinärdatei anhand ihres nullten Arguments zu lokalisieren. Per Konvention das nullte Argument für execve (d.h. argv[0] ) ist der Pfad zur Binärdatei (es obliegt dem Aufrufer, oft einer Shell, die Konvention zu respektieren). Wenn argv[0] enthält keinen / , sollte die Anwendung $PATH ausführen nachschlagen.


Linux
  1. Docker-Protokolle:Was sie sind und wie sie verwendet werden (mit Beispielen)

  2. Was sind Zombie-Prozesse und wie findet und tötet man Zombie-Prozesse?

  3. So finden Sie heraus, wer auf Ihrem System angemeldet ist und was er tut

  4. Hostnamen – Was hat es damit auf sich?

  5. Überprüfen Sie, welche 32-Bit-Pakete auf einem 64-Bit-Server installiert sind

So finden Sie heraus, welche Geräte in Linux mit dem Netzwerk verbunden sind

So finden Sie heraus, ob ein Paket unter Linux und Unix installiert ist oder nicht

So finden Sie heraus, welche IP-Adressen mit Linux verbunden sind

UNIX / Linux:Was ist eine Shell? Was sind verschiedene Muscheln?

So bearbeiten Sie Binärdateien auf Unix-Systemen

Wie kann ich feststellen, welche Prozesse hohe Lasten verursachen, wenn es sich nicht um eine hohe CPU-Auslastung handelt?