Ich habe einige Befehle in meinem .profile
, die ich von meinem aufrufen möchte crontab
.
Zum Beispiel, wenn ich habe,
alias notify-me="~/bin/notify.pl -u user1"
alias notify-team="~/bin/notify.pl -u user1 user2 user3 user4 ...."
Ich möchte nur den Alias aufrufen
0 11 * * * notify-team
Wenn die Liste in meinem .profile
also aktualisiert wird, muss ich sie auch nicht aktualisieren crontab
. Ich scheine jedoch nicht in der Lage zu sein, Aliase in meinem zu verwenden crontab
. Gibt es eine Abhilfe?
Ich habe die Vorschläge hier ausprobiert , um die Umgebung einzurichten (z. B. / bin / bash -lc und das Skript-Wrapper-Skript). Es scheint so, als ob das für Skripte funktioniert, aber nicht für Aliase.
Irgendwelche Ideen?
Antworten:
Aus der Manpage zu Aliasen:
Versuchen Sie es
shopt -s expand_aliases
am Anfang Ihres Sourcing-Skripts. Dies sollte es Ihnen ermöglichen, Warners Vorschlag zu verwenden.quelle
shopt expand_aliases
. Ich wette, es ist aus. Es befindet sich in meiner RHEL 5.3-Box.eval 'foo'
Crontab hat es geschafft.bash -c mit "source" sollte funktionieren:
Das könnte auch funktionieren. die Periode bedeutet "Quelle"
quelle
Wie Chris festgestellt hat, besteht die Standard-Shell-Option für nicht interaktive Shells darin, keine Aliase zu erweitern. Hier ist eine Lösung, die ich gefunden habe, um zu arbeiten.
Schreiben Sie ein Skript, aktivieren Sie die Shell-Option und geben Sie Ihre Aliase als Quelle an.
.bashrc
Beachten Sie insbesondere, dass die Quelle bei der Ausführung angegeben wird, weshalb sie nach dem Aktivieren von expand_aliases erneut angegeben werden muss.Ich entschuldige mich für die anfänglich falsche Empfehlung. Das war dunkler, als ich ursprünglich erwartet hatte.
Skript:
quelle
Ich mag die Idee von artifex, den Alias aus der Datei zu holen und ihn dann wiederzuverwenden, da ich keine Möglichkeit gefunden habe, Aliase direkt zu erweitern / wiederzuverwenden. (Für andere Lösungen ist noch ein weiteres Skript erforderlich.)
Also habe ich diese Funktion geschrieben und in mein .profile eingefügt:
Dann konnte ich es in meiner Crontab für verschiedene Aliase wie dieses verwenden:
etc.
Yay, Code-Wiederverwendung! Danke euch allen.
quelle
Das Einfachste, was Sie tun könnten, wäre, etwas zu erschaffen
~ / bin / benachrichtige mich mit
~ / bin / notify-team mit
Shell-Aliase sind, wie Sie gesehen haben, kompliziert zu warten und in andere Systeme zu integrieren. Das Beste ist, sie in vollwertige Befehle umzuwandeln, die keine lustigen Umgebungsprobleme verursachen.
quelle
bash -ic "notify-team" ist die beste Option. Es stellt Alias in Crontab zur Verfügung. Sie können auch ein & für den Hintergrund hinzufügen, da wir eine 'interaktive' Shell mit -i verwenden, aber in Wirklichkeit nicht damit interagieren.
quelle
funktioniert bei mir
quelle