Wie erstelle ich benutzerdefinierte Bash-Befehle? (Ausführen von Python-, Perl- und Ruby-Dateien)

Wie erstelle ich benutzerdefinierte Bash-Befehle? (Ausführen von Python-, Perl- und Ruby-Dateien)

Ich möchte bestimmte Tools verwenden, die unter Python/Perl/Ruby laufen. Beispielsweise myProgram.pyist in ~/folder1/folder2/ gespeichert. Ich möchte es mit Eingaben von Bash wie ausführen >>> myProgram -h.

Bisher habe ich von zwei Möglichkeiten gelesen, etwas Ähnliches zu tun:

  1. Erstellen Sie Dateien in einem Bin-Verzeichnis:
# in /bin/
~/folder1/folder2/myProgram
# this works when the target is a bash program
  1. Bearbeiten ~/.bashrcfür einen permanenten Alias:
# in ~/.bashrc
alias myProgram='python ~/folder1/folder2/myProgram.py'

Leider scheint die erste Möglichkeit nicht mit Nicht-Bash-Dateien zu funktionieren (soweit ich es versucht habe), und die zweite Option gibt lediglich einen Fehler wie diesen zurück myProgram: command not found.

Wie erstelle ich Bash-Befehle für den schnellen Zugriff auf meine Python-/Perl-/Ruby-Tools mit Eingabe in den Befehlen?

Antwort1

Um Ihre Skripte auf diese Weise auszuführen, benötigen Sie drei Dinge:

  1. Das Skript muss sich in dem Verzeichnis befinden, das in Ihrer Variable aufgeführt ist $PATH. Wenn Sie Skripte ablegen ~/bin, müssen Sie den Pfad in Ihrem Verzeichnis erweitern, .bashrcindem Sie die folgende Zeile hinzufügen, um sie bei jeder Anmeldung ausführen zu können, ohne den vollständigen Pfad zur Datei anzugeben export PATH=$PATH:~/bin. Um zu sehen, welche Verzeichnisse sich bereits in Ihrem Pfad befinden, können Sie ihn einfach ausdrucken echo $PATH. Um Änderungen an der .bashrcDatei vorzunehmen, müssen Sie sich erneut anmelden (oder Bash erneut ausführen).
  2. Das Skript muss über die Berechtigung „Ausführbares Bit“ verfügen. Führen Sie dazu den Befehl auschmod +x /path/to/script
  3. Das Skript muss angeben, welcher Interpreter zur Ausführung verwendet werden soll. Dafür wird eine spezielle erste Zeile im Skript verwendet, die „shebang:“ heißt #!/path/to/interpreter. Für Python wäre das #!/usr/bin/python. Da unterschiedliche Betriebssysteme Binärdateien an unterschiedlichen Orten haben können, wird empfohlen, „shebang“ in einem Formular zu verwenden, #!/usr/bin/env pythondas den Standard-Python-Interpreter ausführt, egal wo er sich befindet.

UPDATE: Basierend auf Kommentaren aktualisiere ich diese Antwort mit symbolischen Links. Wenn Sie nur bereits installierte Tools leichter zugänglich machen möchten, müssen Sie keine Skripte erstellen. Sie müssen nur die ausführbare Datei dieses Tools finden (oder, wenn es ein Skript ist, es ausführbar machen, falls es das noch nicht ist) und dann einen symbolischen Link (siehe man ln) dazu in das Verzeichnis in Ihrem $PATH einfügen (oder das Verzeichnis mit der ausführbaren Datei zu Ihrem $PATH hinzufügen).

HINWEIS: Sie können das Skript auch einfach ausführbar machen (siehe 2.) und es aliaszu Ihrem .bashrcSkript hinzufügen. Es ist jedoch ziemlich umständlich, bei jeder Erstellung eines neuen Skripts einen neuen Alias ​​hinzuzufügen.

verwandte Informationen