Каждый раз, когда я использую команду "at", я получаю это сообщение:
warning: commands will be executed using /bin/sh
Чего он пытается предупредить? Что еще более важно, как отключить предупреждение?
Каждый раз, когда я использую команду "at", я получаю это сообщение:
warning: commands will be executed using /bin/sh
Чего он пытается предупредить? Что еще более важно, как отключить предупреждение?
Это служит хорошим предупреждением для тех из нас, которые не используют bash как нашу оболочку, потому что мы забудем, что функция, которая в нашей повседневной оболочке не будет доступна когда этот код запускается в назначенное время.
то есть.
[email protected]$ at 23:00
warning: commands will be executed using /bin/sh
at> rm **/*.pyc
at> <EOT>
job 1 at 2008-10-08 23:00
Использование "**" имеет совершенно правильное значение zsh, но не /sbin/sh! Легко сделать эти ошибки, если вы привыкли использовать другую оболочку, и это ваша ответственность не забывать делать правильные вещи.
Предупреждает ли какой-либо вредный эффект, кроме раздражения? На странице руководства не упоминается какой-либо способ отключить его, поэтому я не думаю, что вы можете остановить его из-за испускания без восстановления вашего в из источника.
Теперь, если вы хотите просто не видеть его, вы можете использовать его в [time] 2 > /dev/null, чтобы отправить его в забвение, но, к сожалению, подсказки at > по какой-либо причине печатаются в STDERR ( ошибка, IMO - они действительно должны пойти в STDOUT), поэтому они также скрыты от этого. Возможно, будет возможно обработать какую-нибудь оболочку, которая устранит предупреждение, не вызывая подсказки, но а) моя попытка этого (в [время] 2 > и 1 | grep -v предупреждение) не работает, и b), даже если вы можете найти комбинацию, которая работает, она не будет подходящей для сглаживания (поскольку время идет в середине, а не в конце), поэтому вам нужно либо ввести его в полном объеме каждый раз, когда вы его используете или напишите обертку script вокруг в, чтобы обработать ее.
Итак, если это не вызывает реальных проблем, я бы сказал, что вам, вероятно, лучше всего игнорировать предупреждение, как и все остальные.
Он напоминает вам, что команды будут выполняться стандартной оболочкой Bourne, что означает, что ваш командный синтаксис должен быть совместим с этой оболочкой. ( "Fun" факт: я только заметил, что он предупреждает вас, хотя ваша текущая оболочка /bin/sh
. Должна быть ошибкой.)
"Легкий взлом" для удаления сообщения - это просто удалить первую строку вывода. Это можно сделать удобным способом, переопределив команду at
:
at() { /usr/bin/at [email protected] 2>&1 | tail -n +2; }
Вы можете добавить его в файл, который содержит ваши другие псевдонимы оболочки (~/.bashrc
, ~/.zshrc
или эквивалент для вашей оболочки).
ПРИМЕЧАНИЕ. Команда tail
в вышеупомянутом "хаке" также вычеркивает at>
-prefix при написании встроенных команд. Вероятно, это не разбойник, а что-то, о чем нужно знать.
Если вы хотите обойти это сообщение, запустите "at" запустите script, который вызывает указанную среду, будь то ksh, bash, csh, zsh, perl и т.д.
дополнение - см. справочную страницу 'at' http://www.rt.com/man/at.1.html для получения дополнительной информации.
at and batch read commands from standard input or a specified file which are to be executed at a later time, using /bin/sh.