为什么 Jenkins 单独使用 shell 脚本(redhat 7)会得到不同的结果?如果我从终端执行 shell 脚本,它们可以正常运行,但是当我从 Jenkins 运行脚本时,它们会得到不同的结果 Jenkins 2.263.4
答案1
发生这种情况的原因有很多,但最常见的原因是 Jenkins 默认不使用“登录 shell”,而您的默认本地 shell 是登录 shell。这意味着它会在本地执行您的.profile
、.bash_profile
或其他登录脚本,但在远程启动时不会执行。
有几种不同的方法来创建登录 shell,但是如果你正在使用,bash
请在脚本顶部尝试这个:
#!/bin/bash -l
或者,如果您缺少环境变量,也会导致不同的行为。printenv
在本地 shell 上运行,然后将其作为 Jenkins shell 命令的一部分运行,并进行比较以查看是否存在未定义的变量。