Ich habe versucht, at
aus einem Skript heraus zu verwenden, und es wird gedruckt:
Warnung: Befehle werden mit / bin / sh ausgeführt
Wie würde ich eine andere Shell verwenden, wenn ich wollte?
at
Warnt Sie unter Linux immer davor, dass die angegebenen Befehle mit /bin/sh
und nicht mit Ihrer bevorzugten Shell ausgeführt werden. Sie können diese Nachricht nicht unterdrücken, sie ist im Quellcode fest codiert.
Der Befehl, den Sie übergeben, wird von interpretiert /bin/sh
. Dieser Befehl kann der Pfad zu einem Skript sein, wenn Sie möchten. Anschließend /bin/sh
wird das Skriptprogramm ausgeführt, wodurch der Interpreter des Skripts gestartet und das Skript interpretiert wird. Die Sprache des Skripts ist völlig unabhängig von dem Programm, mit dem es gestartet wird. Wenn Sie beispielsweise ein Bash-Skript ausführen möchten (dh ein Skript, das mit beginnt #!/bin/bash
), übergeben Sie einfach den Pfad zum Skript an at
und ignorieren Sie die irrelevante Nachricht.
Sie können es von einer anderen Shell aus ausführen, indem Sie das Skript shebang ändern . Einige typische Shebang-Linien:
#!/bin/sh — Execute the file using sh, the Bourne shell, or a compatible shell #!/bin/csh -f — Execute the file using csh, the C shell, #!/usr/bin/perl -T — Execute using Perl with the option for taint checks #!/usr/bin/php — Execute the file using the PHP command line interpreter #!/usr/bin/python -O — Execute using Python with optimizations to code #!/usr/bin/ruby — Execute using Ruby
Um ein Skript zu bestimmten Zeiten auszuführen, empfehle ich Ihnen, einen Cronjob hinzuzufügen
Beispiel:
In der folgenden Zeile wird das Benutzerprogramm test.pl - angeblich ein Perl-Skript - alle zwei Stunden um Mitternacht, 2 Uhr morgens, 4 Uhr morgens, 6 Uhr morgens, 8 Uhr morgens usw. ausgeführt:
0 * / 2 * * * /home/username/test.pl
#!/usr/bin/perl
ist schon der Schebang in meinem Drehbuch, aber ich bekomme die Warnung#!/bin/sh
....?