Jak ustawić zmienną środowiskową cron HOME?

0

Używam esmtp do wysyłania wiadomości e-mail jako danych wyjściowych zadania cron. Serwer SMTP i konfiguracja poświadczeń są przechowywane pod moim $ HOME / .esmtprc. Wygląda jednak na to, że zmienna $ HOME env jest ustawiona na „/”, a nie na HOME z / etc / passwd, jak sugeruje instrukcja. Zmieniłem / usr / sbin / sendmail na wyjściowe zmienne środowiskowe do pliku i widzę to:

HOME = „/”

Nagłówki wiadomości e-mail zawierają jednak:

X-Cron-Env: <HOME = / home / nazwa użytkownika>

który jest poprawny. Dlaczego więc $ HOME nie jest ustawione dla esmtp?

mehturt
źródło
O ile ktoś już nie odpowiedział na twoje pytanie, lepiej nie dodawać edycji przez cały czas, a raczej ponownie napisać pytanie, aby było tak jasne, jak to możliwe.
slhck
Czy używasz sudolub coś innego, co resetuje twoje środowisko? Czy zastanawiałeś się nad użyciem envdo jawnego ustawienia katalogu domowego dla tego sendmailprocesu?
Daniel Beck
@Daniel: no sudo. Jak do tego celu użyć env? Nawet jeśli jest to potrzebne, dlaczego nie jest to udokumentowane?
mehturt
Myśląc o tym jeszcze raz, wygląda na to, że HOME jest ustawione na skrypt uruchamiany z crontab, ale nie ustawione na sendmail, który wysyła dane wyjściowe zadań cron. Więc chyba muszę skonfigurować konfigurację SMTP do / etc / esmtprc i umożliwić jej odczytanie przez użytkownika (-ów), który uruchamia zadania crona.
mehturt

Odpowiedzi:

0

Zakładam, że masz na myśli crona użytkownika, być może coś, do czego możesz dostać się poprzez 'crontab -e' jako konkretny użytkownik.

Często zadania crona są uruchamiane z $ HOME ustawionym na „/”.

W niektórych wersjach crona możesz to zmienić, dodając wiersz do crontab.

na przykład, możesz zrobić 'crontab -e', a następnie mieć linie wzdłuż następujących

HOME=/home/myhome
0 * * * * /bin/sh -c "echo $HOME" >> /tmp/doesitwork.log

lub coś podobnego

użytkownik3718260
źródło