Unix 未运行脚本中的所有命令

Unix 未运行脚本中的所有命令,unix,Unix,我创建了一个简单的unix脚本update.sh,它执行以下操作: sudo su - export SBT_OPTS="$SBT_OPTS -Dhttp.proxyHost=myproxy-Dhttp.proxyPort=1111" export PATH=$PATH:/home/update/sbt/bin 我使用./update.sh运行 但只执行了初始命令sudo su-。如何更新脚本以运行所有命令?当您运行sudo su-没有任何其他参数时,您将启动一个新的交互式shell,有效用户

我创建了一个简单的unix脚本update.sh,它执行以下操作:

sudo su -
export SBT_OPTS="$SBT_OPTS -Dhttp.proxyHost=myproxy-Dhttp.proxyPort=1111"
export PATH=$PATH:/home/update/sbt/bin
我使用./update.sh运行

但只执行了初始命令sudo su-。如何更新脚本以运行所有命令?

当您运行sudo su-没有任何其他参数时,您将启动一个新的交互式shell,有效用户ID设置为root。在当前shell中执行脚本的其余部分之前,需要退出该shell

要做你想做的事,请键入

SBT_OPTS=... PATH=... sudo su -

与。。。按要求更换。这将设置您的环境,然后在该设置保持不变的情况下启动命令。

将用户切换到root时,在运行导出时将使用root用户的配置文件。您正在尝试查看当前用户或根用户的环境变量吗?可能SBT_OPTS仅为当前用户设置。@anurupr我正在尝试导出这些变量,以便根用户而不是当前用户可以使用这些变量。因此,您正在向SBT_OPTS添加一个值,在运行脚本之前是否已为根用户设置了SBT_OPTS?@anurupr SBT_OPTS未为根用户设置然后逻辑导出SBT_OPTS=$SBT_OPTS-Dhttp.proxyHost=myproxy Dhttp.proxyPort=1111不应工作。不是吗?这不起作用,因为我想通过一个我不太理解的脚本为root用户执行命令。你不能把我建议的那句话写进脚本吗?顺便说一句,忽略后面的记号。它们是一个拼写错误,我已经删除了它们。我认为还有更多的命令需要作为root用户执行。现在一个sudo scipt启动并等待进一步的命令。使用sudo su--c echo执行此操作,您可以执行单个命令。或者将sudo--c myscript_与_exports_和_more_commands.sh一起使用