Füge meinem Pfad eine Binärdatei hinzu

15

Ich habe eine ausführbare Datei. Ich möchte die ausführbare Datei im Terminal nur wie andere Befehle mit Namen ausführen.

Ich kann meine ausführbare Datei in setzen /usr/local/binoder ich könnte hinzufügen , seine PATHzu ~/.bashrc. Beides wird funktionieren.

Was ist besser? Gibt es da einen Unterschied?

Mohammad Reza Rezwani
quelle

Antworten:

12

Nehmen wir zum Beispiel an, Sie haben eine ausführbare Datei myscript. Sie müssen es von einem Terminal ausführen als,

/path/to/myscript

Änderung der Benutzerebene

Wenn Sie die PATHausführbare Datei hinzufügen ~/.bashrc, können Sie die ausführbare Datei nur von einer beliebigen Stelle aus ( Avinash Raj bereits erwähnt) ausführen

myscript

Die Änderung wird jedoch auf Benutzerebene beeinflusst . Das heißt, wenn Sie andere Benutzer haben, können diese nicht nur mit dem Namen auf die ausführbare Datei zugreifen. Wenn sie über die entsprechende Berechtigung verfügen, müssen sie die ausführbare Datei wie folgt ausführen:

/path/to/myscript

Außerdem können Sie das Skript nicht als sudo ausführen, da es sich nicht in PATHroot sudobefindet.

sudo /path/to/myscript

Änderung der Systemebene

Wenn Sie Ihr Skript /usr/local/bineinfügen, kann systemweit und für alle Benutzer darauf zugegriffen werden. In diesem Fall kann jeder Benutzer Ihre ausführbare Datei ausführen, sofern er über die entsprechenden Berechtigungen verfügt.

myscript

In diesem Fall können Sie die ausführbare Datei wie folgt ausführen sudo:

sudo myscript

Wählen Sie nun je nach Bedarf einen Weg.

souravc
quelle
2

Wenn Sie den Speicherort der Datei zu Ihrer $PATHVariablen in Ihrer ~/.bashrcDatei hinzufügen, können Sie sie nur von einem beliebigen Speicherort aus ausführen. Wenn Sie sie dagegen eingeben, /usr/bin/können alle Benutzer auf Ihrem System diese Datei von einem beliebigen Speicherort aus ausführen.

Warum das? Weil Ihre ~/.bashrcDatei nur für Sie als Benutzer sichtbar ist. Daher sind alle variablen Änderungen auf Sie beschränkt. Wenn Sie diese Datei hinzufügen, /usr/bindamit die Datei für alle Benutzer dort bleibt und da /usr/binsie in der $PATHVariablen vorhanden ist, sofern sie nicht entfernt wird, können alle Benutzer sie von einem beliebigen Speicherort aus ausführen.

Job in
quelle
1

Wenn Sie die ausführbare Datei in /usr/binoder /usr/local/bineinfügen, können Sie das Programm ausführen, indem Sie nur den Namen ( your-programanstelle von /usr/local/bin/your-program) angeben .

Wenn Sie stattdessen das Verzeichnis mit dem Programm zur ~/.bashrcDatei hinzufügen PATH, können Sie jede ausführbare Datei in diesem Verzeichnis starten, indem Sie nur den Namen eingeben.

Avinash Raj
quelle
1
Diese Information ist falsch. Sie können die ausführbare Datei auch dann starten, wenn Sie sich nicht in "diesem Verzeichnis" befinden.
Lekensteyn
Wie ist das falsch? Bitte erklären Sie ein bisschen mehr.
Avinash Raj
1
Ok, es fiel mir schwer, Ihre Antwort zu lesen (und dadurch einen Fehler zu machen), also habe ich sie bearbeitet, um die Verwirrung zu beseitigen und die Ablehnung zu korrigieren. Hoffentlich hilft es.
Lekensteyn
Die Frage ist also: Was ist besser? Gibt es da einen Unterschied? Sie haben praktisch nichts weiter gesagt als das OP.
Radu Rădeanu
Ich habe auf die Frage des Betriebssystems geantwortet, aber nicht in einem kurzen Format.
Avinash Raj
0

Nur als Ergänzung zu @souravc Antwort ...

Für den "User Level Change" können Sie anstelle der Bearbeitung der ~/.bashrcDatei einfach das Verzeichnis erstellen $HOME/bin/und Ihre Skripte dort ablegen.

Das Verzeichnis wird automatisch zum Verzeichnis hinzugefügt PATH(spätestens seit Ubuntu 12.04), was bedeutet, dass Sie alle Skripte / ausführbaren Dateien in diesem Verzeichnis mit einem einfachen Befehl ausführen können:

myscript

Nur meine 2 Cent. :)

PS: Ich habe versucht, dies als Kommentar zu @souravc zu posten, aber ich hatte nicht genug Ruf. :-(

Unruhig
quelle