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

Erstellen eines Programms in bin

Es gibt zwei Möglichkeiten, Ihnen zu erlauben, die Binärdatei auszuführen, ohne ihren Pfad anzugeben (ohne das Erstellen von Aliasen oder Shell-Funktionen, um sie mit einem absoluten Pfad für Sie auszuführen):

  1. Kopieren Sie es in ein Verzeichnis, das sich in Ihrem $PATH befindet .
  2. Fügen Sie das Verzeichnis, in dem es sich befindet, zu Ihrem $PATH hinzu .

Um die Datei in ein Verzeichnis in Ihrem Pfad zu kopieren, zum Beispiel /usr/local/bin (wohin lokal verwaltete Software gehen sollte), müssen Sie über Superuser-Privilegien verfügen, was normalerweise bedeutet, dass Sie sudo verwenden :

$ sudo cp -i mybinary /usr/local/bin

Es muss darauf geachtet werden, dass keine vorhandenen Dateien im Zielverzeichnis überschrieben werden (deshalb habe ich -i hinzugefügt hier).

Um ein Verzeichnis zu Ihrem $PATH hinzuzufügen , fügen Sie eine Zeile in Ihrem ~/.bashrc hinzu Datei (wenn Sie bash verwenden ):

PATH="$HOME/bin:$PATH"

... wenn die Binärdatei in $HOME/bin ist .

Dies hat den Vorteil, dass Sie keine Superuser-Rechte benötigen oder etwas im Basissystem auf Ihrem Computer ändern/hinzufügen müssen. Sie müssen nur die Binärdatei in den bin verschieben Verzeichnis Ihres Home-Verzeichnisses.

Hinweis, ändert sich zu .bashrc wird wirksam, wenn die Datei das nächste Mal bezogen wird, was passiert, wenn Sie ein neues Terminal öffnen oder sich ab- und wieder anmelden oder source ~/.bashrc ausführen manuell.


Sie sollten mehr über die PATH-Variable lesen. Ich vermute stark, dass Sie es entsprechend verwenden (oder ändern) sollten.

Ich möchte in der Lage sein, es in das bin-Verzeichnis zu legen

Du meinst wohl /bin/ oder /usr/bin/ . Ich bin mir nicht sicher, ob es ratsam ist, dort eigene Programme hinzuzufügen. Vielleicht wäre es besser, einen Symlink in sie einzufügen (z. B. mit etwas wie ln -sv $(realpath foobar.out) /usr/bin/ ), wenn Sie unbedingt möchten, dass Ihr Programm dort erscheint (was meiner Meinung nach wahrscheinlich ein Fehler ist, da Sie den Paketmanager Ihrer Distribution durcheinander bringen).

Wahrscheinlich installieren Sie Ihr Programm in /usr/local/bin/ ist viel klüger (beide /bin/ zu belassen und /usr/bin/ intakt, wie von Ihrer Linux-Distribution bereitgestellt und verwaltet). Siehe LSB und mehr über den Dateihierarchiestandard.

... wie systemweite Befehle, z. B. .... cd

Dies ist ein starkes Missverständnis Ihrerseits (in der ursprünglichen Variante Ihrer Frage haben Sie zu Recht cd entfernt später). cd ist und kann keine ausführbare Datei sein, es ist (und muss) ein eingebauter Befehl Ihrer Shell sein.

Vielleicht möchten Sie das kostenlos herunterladbare Advanced Linux Programming lesen um zu verstehen, warum cd kann keine ausführbare Datei sein (das aktuelle Arbeitsverzeichnis ist Teil des Zustands jedes Prozesses, und jeder Prozess hat sein eigenes und könnte es mit chdir(2) ändern...)


install /path/to/oobar.out /usr/local/bin/

Linux
  1. Python – Woher weiß /usr/bin/env, welches Programm zu verwenden ist?

  2. Cd in ein namensunbekanntes Verzeichnis in einem bekannten Pfad?

  3. Zählen der Anzahl der Dateien in einem Verzeichnis mit C

  4. Ausschließen des Verzeichnisses beim Erstellen einer .tar.gz-Datei

  5. Bestimmen Sie, ob relativer oder absoluter Pfad im Shell-Programm

So fügen Sie ein Verzeichnis zu PATH in Linux hinzu

Erstellen, Löschen und Verwalten von Verzeichnissen unter Linux

Linux:Fügen Sie PATH ein Verzeichnis hinzu

Fügen Sie dem Pfad ein Bash-Skript hinzu

Warum gibt Bash keine solche Datei oder kein solches Verzeichnis für ein Programm an, das sich in meinem PATH befindet?

Wie füge ich das bin-Unterverzeichnis des ersten Verzeichnisses in GOPATH zu PATH hinzu?