Почему `at` предупреждает меня, что команды будут выполняться с использованием / bin / sh? Что делать, если я хочу другую оболочку?


12

Я попытался использовать atизнутри мой скрипт, и он печатает:

предупреждение: команды будут выполняться с использованием / bin / sh

Как бы я использовал другую оболочку, если бы хотел?

Ответы:


14

В Linux atвсегда предупреждает вас, что он будет выполнять указанные команды /bin/sh, а не вашу любимую оболочку. Вы не можете подавить это сообщение, оно жестко запрограммировано в исходном коде.

Команда, которую вы передаете, интерпретируется /bin/sh. Эта команда может быть путем к сценарию, если хотите; затем /bin/shзапустит программу сценария, в результате чего интерпретатор сценария будет запущен и интерпретирует сценарий. Язык сценария полностью независим от программы, которая его запускает. Так, если, например, вы хотите выполнить скрипт bash (т. Е. Скрипт, который начинается с #!/bin/bash), просто передайте путь к скрипту atи проигнорируйте не относящееся к делу сообщение.


4

вы можете добиться его запуска из другой оболочки, изменив сценарий 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

Чтобы запустить скрипт в указанное время, я предлагаю вам добавить cronjob

Пример:

В следующей строке пользовательская программа test.pl - якобы сценарий Perl - запускается каждые два часа, в полночь, в 2 часа ночи, в 4 часа ночи, в 6 часов утра, в 8 часов утра и т. Д.

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


#!/usr/bin/perlв моем сценарии уже есть шебанг, но я получаю предупреждение
Cratylus

@Cratylus посмотрите здесь для объяснения.
vfbsilva

+1 шбан и упоминание о рубине и перле. Также рассмотрите возможность использования "#! / Bin / env ruby".
ChuckCottrill

мой все еще жалуется после #!/bin/sh....?
gloomy.penguin
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.