2

我正在使用亚马逊 Linux。我创建了一个 jboss 用户,以该用户身份登录后,我可以看到他们的 $PATH

[myuser@mymachine ~]$ sudo su - jboss
[sudo] password for myuser:
Last login: Sun Nov  5 18:19:43 UTC 2017 on pts/0
...
[jboss@mymachine ~]$ which firefox
/usr/local/bin/firefox
[jboss@myuser ~]$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/maven/bin:/usr/java/latest/bin:/home/jboss/.local/bin:/home/jboss/bin

请注意,“firefox”在我的路径上。我有一个在用户 jboss 下运行的 Jenkins WAR 文件,并且我的 Jenkins 作业中有一个脚本(构建后步骤)。但是,在运行该脚本时,Jenkins 中的 $PATH 似乎与 jboss 用户不匹配......

+ whoami
jboss
+ which firefox
which: no firefox in (/usr/local/maven/bin:/usr/java/latest/bin:/usr/java/latest/bin:/sbin:/usr/sbin:/bin:/usr/bin)

在 jboss 用户下运行 Jenkins 时如何获取 $PATH 以匹配在终端上以 jboss 身份登录时的 $PATH?

4

2 回答 2

1

您并没有真正说出来,所以我假设您在 jboss 用户下运行 Jenkins,否则,您无法真正期望环境匹配。

交互式会话与非交互式会话的加载环境不同。一个快速的谷歌没有试图解释这一切,而是找到了这个页面,这似乎解释了发生了什么。

当 Jenkins 运行作业时,它可能会生成一个非交互式或非登录 shell,从而导致不同的环境。(一般来说)firefox 只需要在登录 shell 中是有道理的。但是,如果您需要更改它,您可以找到链接文章中提到的哪些文件正在将 firefox 添加到路径中,您可以在 youe 脚本中获取该文件(source /path/to/.profile_file

或者,如果您以不同的用户身份运行 Jenkins,或者只是另一种方式是在您开始工作时修改 PATH,并将您知道需要的路径添加到环境中。

于 2017-11-05T19:55:48.337 回答
0

此问题是由于 Firefox 未在全局安装。我对 Jenkins 用户和 Ubuntu 用户有同样的问题。在 ubuntu 用户中,我安装了 npm 并尝试在 jenkins 中获取 npm,即使我遇到了同样的错误。始终尝试全局安装软件包或软件,以防您要为其他用户使用相同的软件包。

于 2017-11-05T19:14:28.320 回答