Bash не может установить переменную окружения - PullRequest
0 голосов
/ 03 июня 2019

У меня есть это в моем crontab:

* * * * * cd /etc && . ./cron.sh>>cron.log

В моем cron.sh (который является исполняемым) у меня есть:

#!/bin/sh

echo "hello world"
export MyVar="abcd"

Он работает как с Cron, так и вручную, однакопеременная окружения устанавливается только тогда, когда я запускаю ее вручную с помощью команды:

. ./cron.sh

Может кто-нибудь помочь, пожалуйста.Я знаю, что это связано с источником, но я не могу понять это.

Это также не работает:

* * * * * cd /etc && sh ./cron.sh>>cron.log

Ответы [ 2 ]

5 голосов
/ 03 июня 2019

. будет экспортировать переменные в текущей оболочке , которая порождена cron, а не вашей.

Если вы хотите добавить дополнительную переменную в свои оболочки, используйте ~/.profile и др. (В частности, /etc/profile, который используется всеми пользователями).

2 голосов
/ 03 июня 2019

Я пытаюсь установить переменную для всех пользователей

Вы не можете сделать это с помощью задания cron.

На самом деле, в общем, вы можете 'не делай этого вообще.Переменные окружения оболочки не могут быть установлены извне оболочки.Архитектура операционной системы UNIX / Linux не позволяет этого.

Вы могли бы могли установить переменную окружения для всех пользователей через /etc/profile, кроме ...

  1. файл /etc/profile выполняется только при входе пользователя в систему, а
  2. пользователь может переопределить любые переменные среды, установленные там.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...