Ich habe ein Shell-Skript, das ich ausführen möchte, ohne die Befehle "sh" oder "bash" zu verwenden. Beispielsweise:
Anstatt: sh script.sh
Ich möchte benutzen: script.sh
Wie kann ich das machen?
PS (i) Ich verwende nicht viel Shell-Skript und habe versucht, über Aliase zu lesen, aber ich habe nicht verstanden, wie man sie verwendet.
(ii) Ich habe auch gelesen, wie man das Skript mit einer anderen Datei in den PATH-Variablen verknüpft. Ich verwende meinen Universitätsserver und habe keine Berechtigung zum Erstellen einer Datei an diesen Speicherorten.
$HOME/bin
- falls Sie noch keines haben, fügen Sie es Ihrem PATH hinzu (in der Nähe der Vorderseite). Fügen Sie die Skripte (und alle anderen Programme), die Sie ausführen möchten, direkt ein, ohne den Pfadnamen hier anzugeben, oder fügen Sie hier Symlinks zu den tatsächlichen Programmen ein.mv example.sh example
undexample
sollten dann selbstständig arbeiten.Antworten:
Fügen Sie oben in Ihrer Datei einen "shebang" hinzu:
Und machen Sie Ihre Datei ausführbar (
chmod +x script.sh
).Ändern Sie abschließend Ihren Pfad, um das Verzeichnis hinzuzufügen, in dem sich Ihr Skript befindet:
(Normalerweise möchten Sie
$HOME/bin
Ihre eigenen Skripte speichern.)quelle
source script.sh
funktionierte gut, oder besser gesagtsource <filename_without_any_extension_type>
source ./my-cool-script
(oder. ./my-cool-script
) verschmutzt die aktuelle Shell-Sitzung mit allen im Skript definierten Variablen. Sourcing sollte nicht verwendet werden, es sei denn, Sie möchten die Shell-Sitzung explizit ändern, indem Sie Umgebungsvariablen festlegen, das Verzeichnis ändern usw. Andernfalls können wirklich schreckliche Fehler auftreten, da Variablen aus einer Skriptausführung, wenn sie über Sourcing ausgeführt werden, eine andere Skriptausführung beeinflussen können../
, liegt möglicherweise eine Namenskollision vor. Versuchen Sie es umzubenennen.Dies sind einige der Voraussetzungen für die direkte Verwendung des Skriptnamens:
she-bang (#!/bin/bash)
Zeile ganz oben hinzu.chmod u+x scriptname
make das Skript ausführbar. (Woscriptname
ist der Name Ihres Skripts)/usr/local/bin
Ordner.Hinweis: Der Grund, warum ich vorgeschlagen habe, es unter einem
/usr/local/bin
Ordner abzulegen, ist, dass der Pfad höchstwahrscheinlich bereits zu Ihrem hinzugefügt wurdePATH variable
.Aktualisieren:
Wenn Sie keinen Zugriff auf den
/usr/local/bin
Ordner haben, gehen Sie wie folgt vor:myscripts
.ls -lart
in Ihrem Home-Verzeichnis durch, um das Startskript zu identifizieren, das Ihre Shell verwendet. Es sollte entweder sein.profile
oder.bashrc
.export set PATH=$PATH:~/myscript
.scriptname
.quelle
. .bashrc
. Das heißt, setzen Sie einfach.
gefolgt vonspace
und dann Ihren Startskriptnamen.Stellen Sie einfach sicher, dass es ausführbar ist
chmod +x
. Standardmäßig befindet sich das aktuelle Verzeichnis nicht in Ihrem PATH, daher müssen Sie es als ausführen./script.sh
oder auf andere Weise über einen qualifizierten Pfad referenzieren. Wenn Sie wirklich nur etwas brauchenscript.sh
, müssen Sie es alternativ zu Ihrem PFAD hinzufügen. (Möglicherweise haben Sie keinen Zugriff, um den Systempfad zu ändern, aber Sie können mit ziemlicher Sicherheit den PFAD Ihrer eigenen aktuellen Umgebung ändern.) Dies setzt auch voraus, dass Ihr Skript mit so etwas beginnt#!/bin/sh
.Sie können auch weiterhin einen Alias verwenden, der nicht wirklich mit Shell-Skripten zusammenhängt, sondern nur mit der Shell. Er ist einfach wie folgt:
script.sh
Dies würde es Ihnen ermöglichen, einfach (buchstäblich - dies funktioniert für keine andere*.sh
Datei) anstelle von zu verwendensh script.sh
.quelle
alias
Befehl einfach an der Shell-Eingabeaufforderung aus, und dann steht der Alias zur Verfügung, mit dem der Befehl ausgeführt werden kann.In diesem Beispiel wird die Datei aufgerufen
myShell
Zunächst müssen wir diese Datei erstellen, indem wir Folgendes eingeben:
Beachten Sie, dass wir die
.sh
Erweiterung nicht gesetzt haben ? Das liegt daran, dass wir beim Ausführen vom Terminal nur eingebenmyShell
müssen, um unseren Befehl auszuführen!In Nano MUSS die oberste Zeile sein,
#!/bin/bash
dann können Sie eine neue Zeile verlassen, bevor Sie fortfahren.Zur Demonstration werde ich eine grundlegende
Hello World!
Antwort hinzufügenAlso tippe ich Folgendes ein:
Danach sollte mein Beispiel so aussehen:
Speichern Sie nun die Datei und führen Sie den folgenden Befehl aus:
Jetzt haben wir die Datei ausführbar gemacht, in die wir sie
/usr/bin/
mit dem folgenden Befehl verschieben können:Um sicherzustellen, dass der Computer ordnungsgemäß ausgeführt werden kann, müssen wir den Computer neu starten
ich benutzte
sudo shutdown -r now
Glückwunsch! Unser Befehl ist jetzt erledigt! Im Terminal können wir tippen
myShell
und es sollte heißenHello World!
quelle
/usr/bin
einfügen - viele Systeme speichern sich/usr/local/bin
zu diesem Zweck und reservieren/usr/bin
ausschließlich für das Betriebssystem.sudo chmod
eigene Datei erforderlich .Sie müssen das ausführbare Bit für das Programm aktivieren.
Dann können Sie verwenden
./script.sh
Sie können den Ordner dem PATH in Ihrer
.bashrc
Datei hinzufügen (in Ihrem Home-Verzeichnis). Fügen Sie diese Zeile am Ende der Datei hinzu:quelle
Sie können sudo install (Name des Skripts) / usr / local / bin / eingeben (was Sie eingeben möchten, um das Skript auszuführen)
Beispiel:
sudo install quickcommit.sh /usr/local/bin/quickcommit
Passwort eingebenJetzt kann ohne .sh und in jedem Verzeichnis ausgeführt werden
quelle
Hinzufügen . (aktuelles Verzeichnis) zu Ihrer PATH-Variablen.
Sie können dies tun, indem Sie Ihre .profile-Datei bearbeiten.
Fügen Sie die folgende Zeile in Ihre .profile-Datei ein. Stellen Sie
PATH=$PATH:.
einfach sicher, dass Sie
#!/bin/bash
am Anfang Ihres Skripts die Zeile Shebang ( ) hinzufügen und das Skript ausführbar machen (usingchmod +x <File Name>
).quelle
Hier ist mein Backup-Skript, das Ihnen die Idee und die Automatisierung gibt:
Server: Ubuntu 16.04 PHP: 7.0 Apache2, MySQL usw.
Ändern Sie / home / user in Ihr Benutzerverzeichnis und geben Sie: backupscript an einer beliebigen Stelle auf dem Terminal ein, um das Skript auszuführen! (vorausgesetzt, / usr / bin befindet sich auf Ihrem Weg)
quelle
Geben Sie
"#!/bin/sh"
vor dem Skript. Speichern Sie es dann wiescript.sh
zum Beispiel. Kopieren in$HOME/bin
oder$HOME/usr/bin
Das Verzeichnis kann in verschiedenen Linux-Distributionen unterschiedlich sein, aber sie enden mit
'bin'
und befinden sich im Home-Verzeichniscd $HOME/bin
oder$HOME/usr/bin
Typ
chmod 700 script.sh
. Sie können es einfach ausführen, indem Sie
run.sh
auf dem Terminal tippen . Wenn es nicht funktioniert, versuchen Sie eschmod +x run.sh
stattdessenchmod 700 run.sh
quelle
Machen Sie eine beliebige Datei als ausführbar
Angenommen, Sie haben eine ausführbare Datei mit dem Namen migrate_linux_amd64 und möchten diese Datei als Befehl wie "migrieren" ausführen.
Stellen Sie sicher, dass Sie Ausführungsberechtigungen für die Datei haben.
-rwxr-xr-x 1 oracle oinstall 7473971 May 18 2017 migrate.linux-amd64
Wenn nicht, führen Sie sie aus
chmod +x migrate.linux-amd64
Dann kopieren Sie Ihre Datei nach
/usr/local/bin
. Dieses Verzeichnis gehört root. Verwenden Sie sudo oder wechseln Sie zu root und führen Sie den folgenden Vorgang ausquelle
Gerade:
quelle