Sudo 用户无法导出 ant 的路径

Sudo 用户无法导出 ant 的路径

Sudo 用户无法导出 ant 的路径。

我正在尝试执行setpath.sh导出 ant 路径的 shell 脚本。执行完脚本后,当我执行 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'

这样我就可以在当前 shell 中运行的命令和脚本中使用它。

执行脚本后,当我执行 ant 命令时,显示未找到命令。

我还检查了 ant_home,发现即使执行脚本后它也没有设置setpath.sh

sudo -Hu abc echo $ANT_HOME

ant_home 为空白。

请告知我哪里做错了。

答案1

运行 .sh 脚本会生成一个新的 shell。此 shell 是前一个 shell 的子 shell。脚本运行后,您将返回父 shell。

您无法从子 shell 定义父 shell 的变量。很抱歉这是个坏消息。

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

相关内容