Gibt es eine Möglichkeit, einen Befehlszeilen-Wrapper für eine Bash-Datei zu erstellen?

Gibt es eine Möglichkeit, einen Befehlszeilen-Wrapper für eine Bash-Datei zu erstellen?

Der Titel sagt alles. Ich möchte "run" in die Befehlszeile eingeben und es würde /pathtoscript/script.sh ausführen.
Danke!

Antwort1

Erstellen Sie eine Datei runmit dem Namen und dem Inhalt:

#!/bin/sh
exec /pathtoscript/script.sh "$@"

Platzieren Sie die Datei in Ihrem Pfad und setzen Sie das Ausführbare-Bit.

Was ist „Ihr Weg“?

Geben Sie in der Befehlszeile Folgendes ein:

echo $PATH

Sie sehen eine durch Doppelpunkte getrennte Liste von Verzeichnissen. Dies sind die Verzeichnisse, die die Shell durchsucht, wenn sie nach einem auszuführenden Befehl sucht. Sie werden zusammen als Pfad bezeichnet. Sie sollten Ihre neue Datei runin einem dieser Verzeichnisse ablegen.

Alternativer Ansatz für interaktives Arbeiten

Wenn Sie nur runarbeiten möchten, wenn Sie interaktiv arbeiten, können Sie einen Alias ​​erstellen:

alias run=/pathtoscript/script.sh

Wenn Sie diesen Alias ​​dauerhaft speichern möchten, fügen Sie diese Zeile in .bashrcIhr Home-Verzeichnis ein.

Antwort2

In *nix-Shells geschieht dies durch das Hinzufügen einesausführbare Datei(oder symbolischer Link zu einer ausführbaren Datei) zu einem derVerzeichnisseaufgelistet inDie PATHVariable. Aus einer hypothetischen Sitzung:

$ which foo
which: no foo in (/usr/local/sbin:/usr/local/bin:/usr/bin)
$ foo
bash: foo: command not found
$ echo "$PATH"
/usr/local/sbin:/usr/local/bin:/usr/bin
$ sudo ln -s /path/to/my/script /usr/local/bin/foo
$ foo
[whatever your script prints]

verwandte Informationen