it-swarm.com.de

Wie führe ich ein Shell-Skript aus, ohne die Befehle "sh" oder "bash" zu verwenden?

Ich habe ein Shell-Skript, das ich ausführen möchte, ohne die Befehle "sh" oder "bash" zu verwenden. Zum Beispiel:

Anstelle von: sh script.sh

Ich möchte verwenden: script.sh

Wie kann ich das machen?

P.S. (i) Ich benutze nicht viel Shell-Skript und habe versucht, Aliase zu lesen, aber ich habe nicht verstanden, wie man sie verwendet.

(ii) Ich habe auch über das Verknüpfen des Skripts mit einer anderen Datei in den PATH-Variablen gelesen. Ich benutze meinen Universitätsserver und bin nicht berechtigt, an diesen Orten eine Datei zu erstellen.

236
Rameez Hussain

Fügen Sie ein "Shebang" am Anfang Ihrer Datei hinzu:

#!/bin/bash

Und machen Sie Ihre Datei ausführbar (chmod +x script.sh).

Ändern Sie schließlich Ihren Pfad, um das Verzeichnis hinzuzufügen, in dem sich Ihr Skript befindet:

export PATH=$PATH:/appropriate/directory

(normalerweise möchten Sie $HOME/bin zum Speichern Ihrer eigenen Skripte)

404
fge

Dies sind einige der Voraussetzungen für die direkte Verwendung des Skriptnamens:

  1. Fügen Sie die she-bang (#!/bin/bash) -Zeile ganz oben hinzu.
  2. Mit chmod u+x scriptname das Skript ausführbar machen. (wobei scriptname der Name Ihres Skripts ist)
  3. Platzieren Sie das Skript im Ordner /usr/local/bin.
  4. Führen Sie das Skript nur mit dem Namen des Skripts aus.

Hinweis: Der Grund, warum ich vorgeschlagen habe, es unter dem Ordner /usr/local/bin abzulegen, ist, dass der Pfad höchstwahrscheinlich bereits zu Ihrem PATH variable hinzugefügt wird.

Aktualisieren:

Wenn Sie keinen Zugriff auf den Ordner /usr/local/bin haben, gehen Sie wie folgt vor:

  1. Erstellen Sie einen Ordner in Ihrem Ausgangsverzeichnis und nennen Sie ihn myscripts.
  2. Führen Sie in Ihrem Ausgangsverzeichnis ls -lart aus, um das Startskript zu identifizieren, das Ihre Shell verwendet. Es sollte entweder .profile oder .bashrc sein.
  3. Wenn Sie das Startskript identifiziert haben, fügen Sie die folgende Zeile in Ihr Skript ein - export set PATH=$PATH:~/myscript.
  4. Geben Sie Ihrem Startskript eine Quelle, oder melden Sie sich ab und wieder an.
  5. Führen Sie Ihr Skript mit scriptname aus.
64
jaypal singh

Stellen Sie einfach mit chmod +x sicher, dass es ausführbar ist. Standardmäßig befindet sich das aktuelle Verzeichnis nicht in Ihrem PATH. Sie müssen es daher als ./script.sh ausführen oder auf andere Weise über einen qualifizierten Pfad darauf verweisen. Wenn Sie wirklich nur script.sh benötigen, müssen Sie es alternativ zu Ihrem PATH hinzufügen. (Möglicherweise haben Sie keinen Zugriff, um den Systempfad zu ändern, aber Sie können mit ziemlicher Sicherheit den PATH Ihrer aktuellen Umgebung ändern.) Dies setzt auch voraus, dass Ihr Skript mit #!/bin/sh beginnt.

Sie können auch weiterhin einen Alias ​​verwenden, der nicht wirklich mit Shell-Skripten zusammenhängt, sondern nur mit der Shell.

alias script.sh='sh script.sh'

Womit Sie einfach script.sh (im wahrsten Sinne des Wortes - dies funktioniert bei keiner anderen *.sh -Datei) anstelle von sh script.sh verwenden können.

20
ziesemer

In diesem Beispiel heißt die Datei myShell

Als Erstes müssen wir diese Datei erstellen, indem wir zunächst Folgendes eingeben:

Sudo nano myShell

Beachten Sie, dass wir die Erweiterung .sh nicht eingefügt haben? Das liegt daran, dass wir, wenn wir es vom Terminal aus ausführen, nur myShell eingeben müssen, um unseren Befehl auszuführen!

In nano MUSS die oberste Zeile #!/bin/bash sein, dann können Sie eine neue Zeile verlassen, bevor Sie fortfahren.

Zur Demonstration werde ich eine einfache Hello World! Antwort hinzufügen

Also tippe ich folgendes:

echo Hello World!

Danach sollte mein Beispiel so aussehen:

#!/bin/bash
echo Hello World!

Speichern Sie nun die Datei und führen Sie den folgenden Befehl aus:

Sudo chmod +x myShell

Nachdem wir die Datei ausführbar gemacht haben, können wir sie mit dem folgenden Befehl nach /usr/bin/ verschieben:

Sudo cp myShell /usr/bin/

Nur um sicherzustellen, dass die Maschine es richtig ausführen kann, müssen wir die Maschine neu starten

Ich habe Sudo shutdown -r now verwendet

Glückwunsch! Unser Befehl ist jetzt erledigt! Im Terminal können wir myShell eingeben und es sollte Hello World! stehen

14
user8493486

Sie müssen das ausführbare Bit für das Programm aktivieren.

chmod +x script.sh

Dann kannst du ./script.sh benutzen

Sie können den Ordner dem Pfad in Ihrer .bashrc -Datei (in Ihrem Ausgangsverzeichnis) hinzufügen. Fügen Sie diese Zeile am Ende der Datei hinzu:

export PATH=$PATH:/your/folder/here
13
Uku Loskit

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 eingeben

jetzt kann ohne .sh und in jedem Verzeichnis ausgeführt werden

6
JoelWass

Hinzufügen . (aktuelles Verzeichnis) in Ihre PATH-Variable.
Sie können dies tun, indem Sie Ihre .profile-Datei bearbeiten.
Fügen Sie die folgende Zeile in Ihre .profile-Datei ein
PATH=$PATH:.

Stellen Sie einfach sicher, dass Sie am Anfang Ihres Skripts die Zeile Shebang (#!/bin/bash) einfügen und das Skript ausführbar machen (mit chmod +x <File Name>).

3
Arpit Tyagi

Gerade:

/path/to/file/my_script.sh
0
DimiDak

Hier ist mein Backup-Skript, das Ihnen die Idee und die Automatisierung gibt:

Server: Ubuntu 16.04 PHP: 7.0 Apache2, MySQL etc ...

# Make Shell Backup Script - Bash Backup Script
    nano /home/user/bash/backupscript.sh
        #!/bin/bash
        # Backup All Start
        mkdir /home/user/backup/$(date +"%Y-%m-%d")
        Sudo Zip -ry /home/user/backup/$(date +"%Y-%m-%d")/etc_rest.Zip /etc -x "*Apache2*" -x "*php*" -x "*mysql*"
        Sudo Zip -ry /home/user/backup/$(date +"%Y-%m-%d")/etc_Apache2.Zip /etc/Apache2
        Sudo Zip -ry /home/user/backup/$(date +"%Y-%m-%d")/etc_php.Zip /etc/php
        Sudo Zip -ry /home/user/backup/$(date +"%Y-%m-%d")/etc_mysql.Zip /etc/mysql
        Sudo Zip -ry /home/user/backup/$(date +"%Y-%m-%d")/var_www_rest.Zip /var/www -x "*html*"
        Sudo Zip -ry /home/user/backup/$(date +"%Y-%m-%d")/var_www_html.Zip /var/www/html
        Sudo Zip -ry /home/user/backup/$(date +"%Y-%m-%d")/home_user.Zip /home/user -x "*backup*"
        # Backup All End
        echo "Backup Completed Successfully!"
        echo "Location: /home/user/backup/$(date +"%Y-%m-%d")"

    chmod +x /home/user/bash/backupscript.sh
    Sudo ln -s /home/user/bash/backupscript.sh /usr/bin/backupscript

ändern Sie/home/user in Ihr Benutzerverzeichnis und geben Sie Folgendes ein: backupscript irgendwo auf dem Terminal, um das Skript auszuführen! (unter der Annahme, dass/usr/bin in Ihrem Pfad ist)

0
Tarik

Geben Sie "#!/bin/sh" vor dem Skript ein. Speichern Sie es dann beispielsweise als script.sh. kopiere es nach $HOME/bin oder $HOME/usr/bin
Das Verzeichnis kann auf verschiedenen Linux-Distributionen unterschiedlich sein, endet jedoch mit 'bin' und befindet sich im Ausgangsverzeichnis cd $HOME/bin oder $HOME/usr/bin
Typ chmod 700 script.sh
Und Sie können es einfach ausführen, indem Sie auf dem Terminal run.sh eingeben. Wenn es nicht funktioniert, versuchen Sie chmod +x run.sh anstelle von chmod 700 run.sh

0
Gyan Prakash