Ich habe verlinkt und ein Programm in C ++ erstellt, das ich jetzt habe
foobar.out
Ich möchte in der Lage sein, es in das bin-Verzeichnis zu stellen und es wie systemweite Befehle zu verwenden, z
ssh, echo, bash, cd...
Wie kann ich das erreichen?
linux
raspberry-pi
path
binary
NullOverFlow
quelle
quelle
foobar
, nichtfoobar.out
. (zBgcc -Wall -O3 -march=native foobar.c -o foobar
).a.out
ist der Standardname, aber nehmen Sie das nicht als Beispiel.Antworten:
Es gibt zwei Möglichkeiten, wie Sie die Binärdatei ausführen können, ohne ihren Pfad anzugeben (ohne das Erstellen von Aliasen oder Shell-Funktionen, um sie mit einem absoluten Pfad für Sie auszuführen):
$PATH
.$PATH
.Um die Datei beispielsweise in ein Verzeichnis in Ihrem Pfad zu kopieren
/usr/local/bin
( wohin lokal verwaltete Software gehen soll ), müssen Sie über Superuser-Berechtigungen verfügen. Dies bedeutet normalerweise, dass Sie Folgendes verwendensudo
:Es muss darauf geachtet werden, keine vorhandenen Dateien im Zielverzeichnis zu überschreiben (aus diesem Grund habe ich
-i
hier hinzugefügt ).Um ein Verzeichnis zu Ihrem
$PATH
hinzuzufügen, fügen Sie eine Zeile in Ihre~/.bashrc
Datei ein (falls Sie verwendenbash
):... wenn die Binärdatei in ist
$HOME/bin
.Dies hat den Vorteil, dass Sie keine Superuser-Berechtigungen benötigen oder etwas im Basissystem Ihres Computers ändern / hinzufügen müssen. Sie müssen nur die Binärdatei in das
bin
Verzeichnis Ihres Home-Verzeichnisses verschieben.Beachten Sie, dass Änderungen an
.bashrc
wirksam werden, wenn die Datei das nächste Mal bezogen wird. Dies geschieht, wenn Sie ein neues Terminal öffnen oder sich abmelden und erneut anmelden odersource ~/.bashrc
manuell ausführen .quelle
install
ist schön; Dadurch befindet sich das Skript im Root-Besitz. (Theoretisch könnte jemand, der Ihr Konto knackt, es nicht vermasseln. Zumindest nicht, bis er das nächste Mal Root-Privilegien erhält, wenn Sie manuell sudo oder so ...)Sie sollten mehr über die Variable PATH lesen . Ich vermute sehr, dass Sie es angemessen verwenden (oder ändern) sollten.
Ich denke du meinst
/bin/
oder/usr/bin/
. Ich bin mir nicht sicher, ob es sinnvoll ist, dort eigene Programme hinzuzufügen. Vielleicht ist es besser, einen Symlink in sie einzufügen (z. B. mit so etwas wieln -sv $(realpath foobar.out) /usr/bin/
), wenn Sie unbedingt möchten, dass Ihr Programm dort angezeigt wird (was meiner Meinung nach wahrscheinlich ein Fehler ist, da Sie den Paketmanager Ihrer Distribution durcheinander bringen ).Wahrscheinlich ist die Installation Ihres Programms in
/usr/local/bin/
viel klüger (beides/bin/
und/usr/bin/
intakt zu lassen, wie von Ihrer Linux-Distribution bereitgestellt und verwaltet ). Siehe LSB und mehr über die lesen Datei Hierarchy Standard .Dies ist ein starkes Missverständnis Ihres Teils (in der ursprünglichen Variante Ihrer Frage haben Sie
cd
später zu Recht entfernt ).cd
ist keine ausführbare Datei und kann keine ausführbare Datei sein . Sie ist (und muss) ein integrierter Befehl Ihrer Shell.Vielleicht möchten Sie die frei herunterladbare erweiterte Linux-Programmierung lesen, um zu verstehen, warum
cd
keine ausführbare Datei sein kann (das aktuelle Arbeitsverzeichnis ist Teil des Status jedes Prozesses, und jeder Prozess hat ein eigenes und kann es mit chdir (2) ändern . .)quelle
quelle
Kopieren Sie Ihre ausführbare Datei nach
/usr/bin/
, Sie sollten sie dann wieecho
eine andere ausführbare Datei ausführen können/usr/bin/
quelle
Ich würde die akzeptierte Antwort von @Kusalananda ergänzen. Ein weiterer Vorteil beim Platzieren Ihrer selbst gebrauten Skripte und Programme in $ HOME / bin besteht darin, dass Sie beim Upgrade Ihres Systems diese nicht verlieren. Dies ist eine bessere Möglichkeit, Ihre persönliche Toolbox zu verwalten und sie portabler zu machen.
quelle
/usr/local/bin
ist auch eine gute Wahl, je nachdem, ob es sich um ein Skript handelt, das nur Sie verwenden würden oder nicht. Ich behalte (Teile von) meinem / usr / local bei Neuinstallationen.