Eu tenho alguns comandos no meu .profile
que eu quero chamar do meu crontab
.
Por exemplo, se eu tiver,
alias notify-me="~/bin/notify.pl -u user1"
alias notify-team="~/bin/notify.pl -u user1 user2 user3 user4 ...."
Eu gostaria de invocar o alias
0 11 * * * notify-team
portanto, se a lista no meu .profile
for atualizada, não preciso atualizar o crontab
também. No entanto, parece que não consigo usar aliases no meu crontab
. Existe uma solução alternativa?
Tentei as sugestões aqui para configurar o ambiente (por exemplo, / bin / bash -lc e o script wrapper de script). Parece que isso funciona para scripts, mas não para aliases.
Alguma ideia?
Respostas:
Na página de manual sobre aliases:
Portanto, tente usar
shopt -s expand_aliases
no início do seu script de fornecimento. Isso deve permitir que você use a sugestão da Warner.fonte
shopt expand_aliases
. Aposto que está fora. Está na minha caixa do RHEL 5.3.eval 'foo'
crontab fez o truque.bash -c com "fonte" deve funcionar:
isso também pode funcionar. o período significa "fonte"
fonte
Como Chris identificou, a opção de shell padrão para shells não interativos é não expandir aliases. Aqui está uma solução que eu encontrei para trabalhar.
Escreva um script, ative a opção shell e crie seus aliases. Esteja ciente de que
.bashrc
é originário na execução, e é por isso que deve ser originado novamente depois de ativar o expand_aliases.Peço desculpas pela recomendação inicialmente incorreta. Isso foi mais obscuro do que eu esperava inicialmente.
Roteiro:
fonte
Gosto da ideia do artifex de pegar o alias do arquivo e depois reutilizá-lo, pois não consegui encontrar uma maneira de expandir / reutilizar aliases diretamente. (Outras soluções ainda exigem outro script.)
Então, eu escrevi essa função e coloquei no meu .profile:
Pude usá-lo no meu crontab para vários aliases como este:
etc.
Sim, reutilização de código! Obrigado a todos.
fonte
Realmente, a coisa mais simples que você poderia fazer seria criar
~ / bin / notifique-me com
~ / bin / equipe de notificação com
os aliases de shell são complicados de manter e integrar em outros sistemas, como você viu. a melhor coisa a fazer é transformá-los em comandos completos que não terão problemas engraçados no ambiente.
fonte
bash -ic "notify-team" é a melhor opção. Torna o alias disponível no crontab. Você também pode adicionar um & for background, pois estamos usando um shell 'interativo' com -i, mas na realidade não estamos interagindo com ele.
fonte
funciona para mim
fonte