Jenkins 可以获取关联用户的 .bashrc 吗?

amp*_*ent 5 bash environment-variables .bash-profile jenkins

我的Jenkins运行Tomcat在 user 下运行buildman,因此所有作业都在该用户(in CentOS)下运行。我的一些工作取决于我在.bashrc. 但是,Jenkins 作业看不到该文件中设置的任何变量,即使该脚本应该是为非登录 shell 提供的,例如我认为 Jenkins 应该是(?)。

解决方法很简单:我只是将 .bashrc 中的所有变量复制并粘贴到 Jenkins 的构建命令脚本中。但这不是很优雅。有什么方法可以让 Jenkins 获取它运行的用户的 .bashrc ,以便它获得其通常的配置,而不必在每个作业中单独设置它?

小智 7

Jenkins 为每个脚本部分创建一个临时 sh 脚本(至少在使用“经典”项目时 - 对于管道方法我不确定)。这个临时脚本是用 sh 执行的。在大多数 Linux 系统上,这是 bash 的符号链接,这篇SO-post 提供了一些见解。
另外,根据 bash 的手册页,用 sh 调用 bash “尝试尽可能模仿 sh 历史版本的启动行为,同时也符合 POSIX 标准。” 这意味着 .bashrc 根本不被解释。不过,您可以尝试为每个 shell 调用获取 bashrc...