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 的变量。很抱歉这是个坏消息。