bash, поведение export with/without sudo

Автор sunjob, 28 февраля 2015, 21:00:54

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

sunjob

добрый день

переношу скрипты со слаки на дебиан, наткнулся на неоднозначное поведение export при использовании sudo

run.sh - запускаемый скрипт, в нем определяются переменные, втч и экспортируемые
из него стартует скрипт sub.sh, в котором используется экспортированные переменные

дак вот, если sub.sh - вызывается "просто так" - то переменные нормально видны, если он вызывается как "sudo ./sub.sh" - то переменные обнулены (т.е. не экспортированы)

само собой, в слаке - работает нормально, в дебиане - проблема



#
# run.sh
#

#!/bin/sh
clear; set -e

export A=aaa
B=bbb

echo "
### - $0
A=$A
B=$B
"
./sub.sh      # OK - Slack & Debian
sudo ./sub.sh # OK - Slack, NO - Debian

...

#
# sub.sh
#

#!/bin/sh

echo "
### - $0
A=$A
B=$B
"
...
отчет работы в дебиане

### - ./run.sh
A=aaa
B=bbb


### - ./sub.sh
A=aaa
B=

[sudo] password for $USER:

### - ./sub.sh
A=
B=



как "заставить" нормально экспортироваться переменные при использовании sudo (в дебиане)?
какие будут мнения, идеи?

и  как сделать такое поведение по умолчанию? (кроме алиаса)

p.s.
Debian 7.8.0 wheezy
Slackware 10.x-12.2

ogost

sudo -E run.sh
обычно sudo обнуляет переменные окружения из соображений безопасности, не знаю почему в слаке такого нет.

sunjob

#2
run.sh - запускается от пользователя, а вот sub.sh - стартует как sudo ...

ну а так, да, сработало! спасибо!!!

а второй вопрос: как сделать такое поведение по умолчанию? (кроме алиаса)