У меня есть некоторые команды, .profile
которые я хочу вызвать из моего crontab
.
Например, если у меня есть,
alias notify-me="~/bin/notify.pl -u user1"
alias notify-team="~/bin/notify.pl -u user1 user2 user3 user4 ...."
Я хотел бы просто вызвать псевдоним
0 11 * * * notify-team
так что если список в моем .profile
обновляется, мне тоже не нужно обновлять crontab
. Тем не менее, я не могу использовать псевдонимы в моем crontab
. Есть ли работа вокруг?
Я попробовал здесь предложения по настройке среды (например, / bin / bash -lc и скрипт script-wrapper). Кажется, что это работает для сценариев, но не псевдонимов.
Есть идеи?
Ответы:
Из справочной страницы по псевдонимам:
Так что попробуйте использовать
shopt -s expand_aliases
в начале вашего сценария поиска. Это должно позволить вам использовать предложение Уорнера.источник
shopt expand_aliases
. Держу пари, что это не так. Это в моей коробке RHEL 5.3.eval 'foo'
в crontab все получилось.bash -c с «источником» должен работать:
это может также работать. период означает «источник»
источник
Как определил Крис, опция оболочки по умолчанию для неинтерактивных оболочек - не раскрывать псевдонимы. Вот решение, которое я нашел для работы.
Напишите сценарий, включите параметр оболочки и укажите псевдонимы. Будьте особенно внимательны к тому, что
.bashrc
он получен при исполнении, поэтому он должен быть получен снова после включения expand_aliases.Мои извинения за изначально неверную рекомендацию. Это было более неясным, чем я первоначально ожидал.
Автор сценария:
источник
Мне нравится идея Artifex извлечь псевдоним из файла и затем использовать его повторно, поскольку я не смог найти способ расширения / повторного использования псевдонимов напрямую. (Другие решения все еще требовали другого сценария.)
Поэтому я написал эту функцию и поместил ее в свой .profile:
Затем я смог использовать его в моем crontab для различных псевдонимов, например:
и т.п.
Ух, повторное использование кода! Спасибо всем.
источник
На самом деле самое простое, что вы могли бы сделать, это создать
~ / bin / notify-me with
~ / bin / notify-team with
Как вы видели, псевдонимы оболочки сложно поддерживать и интегрировать в другие системы. Лучше всего превратить их в полноценные команды, которые не будут вызывать смешных проблем с окружением.
источник
bash -ic "notify-team" - лучший вариант. Это делает псевдоним доступным в crontab. Вы также можете добавить & для фона, так как мы используем «интерактивную» оболочку с -i, но в действительности не взаимодействуем с ней.
источник
работает для меня
источник