Проблемы с ударом соединяют каналом при использовании 'su'

В Ubuntu Ясный Lynx я пытаюсь сделать

su -l user -c "foo.sh args"

где foo.sh исполняемый сценарий удара на PATH набор ~user/.bashrc. К сожалению, это перестало работать, потому что это не может найти foo.sh. Если я su -l user и вручную введите foo.sh args в командной строке это хорошо работает. В увеличении ПУТИ выполняют ~user/.bashrc и, кажется, работает действительно ли я su с -l в интерактивном режиме, но это, кажется, не работает, когда я указываю команду.

Какая-либо идея, почему это, и как я могу обойти это?

4
задан 08.09.2010, 06:29

1 ответ

Это запускает оболочку как неинтерактивную оболочку входа в систему, таким образом, это обрабатывает ~/.profile и нет ~/.bashrc. Можно установить Ваш PATH в том файле или делают это в общем файле, который они оба получают. Некоторые люди/дистрибутивы устанавливают один файл запуска для определения источника другого, но я не рекомендую это.

От man bash:

Когда удар вызывается как интерактивная оболочка входа в систему, или как неинтерактивная оболочка с - опция входа в систему, он сначала читает и выполняет com ‐ NAND из файла/etc/profile, если тот файл существует. После чтения того файла это ищет ~/.bash_profile, ~/.bash_login и ~/.profile, в том порядке, и читает и выполняет команды от первой, которая существует и читаема. - noprofile опция может использоваться, когда оболочка запускается для запрещения этого поведения.

2
ответ дан 07.12.2019, 21:27

Теги

Похожие вопросы