LINUX.ORG.RU

sudo environment

 , ,


0

2

В wm у меня все программы в автостарт поставлены. Все скрипты оформленны в примерно таком виде:

sleep 30
while true;do
    if [[ ! -n $(pidof -x ${TARGET}) ]];then
        sudo -u user bash -c "cd ${TARGET_DIR};./${TARGET}" >/dev/null 2>&1
    fi
    sleep ${SLEEP_TIME}
done

Всё работает годами, только появилась одна загвоздка. Есть у меня скрипт, который тянул переменные из /etc/PROFILE. И тут меня осенило, что лучше отказаться от PROFILE и сделать export нужных переменных. Всё было хорошо, пока скрипт не начал отрабатывать в вышеуказанном «запускальщике» скрипта. Оказалось, что в шелле я получаю переменные, а при запуске «запускальщиком», - нет. Начал разбираться и нашел:

Defaults !env_reset

Но это не помогло. Как это вообще можно решить? sudo -E не помогает

★★★

«Пирогами, и блинами, И сушёными грибами.»

у меня скрипт, который тянул переменные из /etc/PROFILE.

контекст?

И тут меня осенило, что лучше отказаться от PROFILE и сделать export нужных переменных.

контекст?

Всё было хорошо, пока скрипт не начал отрабатывать в вышеуказанном «запускальщике» скрипта. Оказалось, что в шелле я получаю переменные, а при запуске «запускальщиком», - нет.

контекст?

kindof
()

Я не до конца понял проблему, не помешал бы пример конкретной переменной, которой не хватает, и какая ошибка получается, и почему с предыдущим подходом всё работало и почему решили отказаться от работающего подхода.

Но наверное индивидуальные переменные можно было бы передать в самой команде sudo, рпз уж там и cd затисался.

А вообще, по-правильному, возможно имеет смысл разобраться в разнице bashrc и bash_profile.

Kroz ★★★★★
()