1

Пользователь Sudo не может экспортировать путь муравья.

Я пытаюсь выполнить сценарий оболочки setpath.sh который экспортирует путь для муравья. После выполнения сценария, когда я выполняю команду ant, то получение команды ant не найдено.

Вот мой скрипт setpath.sh :

#!/bin/sh

ABC_HOME=`pwd`
ANT_HOME=$ABC_HOME/lib/ant

PATH=$ANT_HOME/bin:$ABC_HOME/scripts/unix:$PATH

chmod +x $ANT_HOME/bin/ant
chmod +x $ABC_HOME/scripts/unix/*/*.sh

export ABC_HOME ANT_HOME PATH

Вот шаги, которые я использую.

sudo -Hu abc /bin/sh setpath.sh

Примечание: я разместил псевдоним . ./setpath.sh в sudo пользователя .bash_profile

alias setpath.sh='. ./setpath.sh'

Так что я могу использовать его в моей команде, а скрипт запускается в текущей оболочке.

После выполнения скрипта, когда я выполняю команду ant, он показывает, что команда не найдена.

Я также проверил ant_home и обнаружил, что он не был установлен даже после выполнения сценария setpath.sh .

sudo -Hu abc echo $ANT_HOME

Получение ant_home как пустое.

Пожалуйста, сообщите, где я иду не так.

1 ответ1

0

Запуск сценария .sh порождает новую оболочку. Эта оболочка является дочерней по отношению к вашей предыдущей оболочке. Ваш скрипт запускается, затем вы возвращаетесь в родительскую оболочку.

Вы не можете определить переменные родительской оболочки из ее дочерней оболочки. Извините за плохие новости.

http://www.grymoire.com/Unix/Sh.html#uh-16

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