Dlaczego `at` ostrzega mnie, że polecenia będą wykonywane przy użyciu / bin / sh? Co jeśli chcę inną powłokę?

12

Próbowałem użyć atz mojego skryptu, który wyświetla:

ostrzeżenie: polecenia będą wykonywane za pomocą / bin / sh

Jak miałbym użyć innej powłoki, gdybym chciał?

Cratylus
źródło

Odpowiedzi:

14

Pod Linuksem atzawsze ostrzega cię, że wykona określone polecenia za pomocą /bin/shtwojej ulubionej powłoki. Nie można ukryć tej wiadomości, jest ona zakodowana na stałe w kodzie źródłowym.

Przekazywane polecenie jest interpretowane przez /bin/sh. To polecenie może być ścieżką do skryptu, jeśli chcesz; następnie /bin/shwykona program skryptowy, powodując uruchomienie interpretera skryptu i interpretację skryptu. Język skryptu jest całkowicie niezależny od programu, który go uruchamia. Jeśli więc chcesz na przykład wykonać skrypt bash (tj. Skrypt rozpoczynający się od #!/bin/bash), po prostu podaj ścieżkę do skryptu ati zignoruj ​​nieistotny komunikat.

Gilles „SO- przestań być zły”
źródło
4

możesz osiągnąć uruchomienie go z innej powłoki zmieniając shebang skryptu . Niektóre typowe linie shebang:

#!/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

Aby uruchomić skrypt w danym momencie, sugeruję dodanie cronjob

Przykład:

Poniższy wiersz sprawia, że ​​program użytkownika test.pl - pozornie skrypt Perla - jest uruchamiany co dwie godziny, o północy, 2 nad ranem, 4 nad ranem, 6 nad ranem, 8 nad ranem i tak dalej:

0 * / 2 * * * /home/username/test.pl

vfbsilva
źródło
#!/usr/bin/perljest już shebang w moim skrypcie, ale dostaję ostrzeżenie
Cratylus
@ Cratylus zajrzyj tutaj, aby uzyskać wyjaśnienie.
vfbsilva,
+1 shbang i wzmianka o rubinie i perlu. Rozważ też użycie „#! / Bin / env ruby”.
ChuckCottrill
moje wciąż narzeka po #!/bin/sh...?
gloomy.penguin