Пользователь Sudo не может экспортировать путь муравья
Пользователь 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 ответ
Запуск сценария.sh порождает новую оболочку. Эта оболочка является дочерней по отношению к вашей предыдущей оболочке. Ваш скрипт запускается, затем вы возвращаетесь в родительскую оболочку.
Вы не можете определить переменные родительской оболочки из ее дочерней оболочки. Извините за плохие новости.