Почему это работает (как root):

$su - aba
~> echo $JAVA_HOME

Ausgabe: /usr/java/jdk1.7.0_45

И не этот сценарий оболочки (также запускается как root):

#!/bin/bash
su - aba << EOF
echo $JAVA_HOME > tmp
EOF

Выход:

$more tmp

$

Вопрос: Как я могу сделать эту работу? Или лучше: моя цель - выполнить некоторые команды от имени другого пользователя, а также использовать эту среду этого пользователя и, возможно, даже изменить его среду (только временную).

РЕДАКТИРОВАТЬ Тем временем я преуспел с runuser - aba -c 'echo JAVA_HOME' , хотя это не во всех аспектах, что хотелось, потому что я все еще могу передать только одну командную строку.

1 ответ1

1

su - aba

коротка для

su --login ada

что не имеет смысла внутри скрипта. Поскольку у вас нет терминала после его запуска, он возвращается к предыдущему пользователю (root).

пытаться

su -c "echo $JAVA_HOME" ada

но даже это не запустит пользователей .profile или .bashrc.

Однако вы являетесь пользователем root, и вы сможете проанализировать эти файлы для правильных настроек.

например.

TEMP_JAVA=$(grep JAVA_HOME /home/$USER/.bashrc)
JAVA_HOME=${TEMP_JAVA##*=} echo $JAVA_HOME

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .