当使用运行“sh”与“执行”的一段测试代码时,我注意到环境变量存在很大差异。它很快看起来好像涉及两个完全不同的主机 - 即使调用行在相同的脚本级别上只有大约两行。
我的测试代码就是这样(简化/原理):
sh("set")
[ "sh", "-c", "set" ].execute()
示例构建产生了以下输出:
sh: HOSTNAME='jenkins-master-build-node-820bj'
execute: HOSTNAME=jenkins-master-8-v95jg
观察到环境变量的许多其他差异。理由:这绝对不是同一个运行时环境,甚至可能不是同一个计算机系统。我此刻很疑惑!
这怎么能理解?这怎么可能控制?事实上,我希望 execute() 调用的行为与 sh() 相同。