【问题标题】:When executing an SSH command in Jenkins, the bash profile is different to when connecting over SSH with the same user在 Jenkins 中执行 SSH 命令时,bash 配置文件与使用同一用户通过 SSH 连接时不同
【发布时间】:2014-06-23 10:39:37
【问题描述】:

我正在尝试使用 Jenkins SSH exec 功能在远程服务器上运行一些 CLI nodejs 命令。

我在尝试永久运行时收到一条错误消息,这是我使用 npm 全局安装的。

编辑:错误是; -bash: forever: command not found.

以 root 身份通过 SSH 连接并运行 which npm 返回;

/root/local/bin/npm

而通过 Jenkins,使用与 root 返回相同的命令;

/usr/bin/npm

我尝试设置 bash 变量,但这些变量似乎在两种连接介质之间也不一致。

两者都是使用此处详述的顶级方法安装的; https://gist.github.com/isaacs/579814#file-node-and-npm-in-30-seconds-sh

【问题讨论】:

  • 我现在有一个非常相似的问题,你找到解决这个@Dan Steele 的方法了吗?

标签: node.js bash ubuntu jenkins npm


【解决方案1】:

试试这个:

ssh user@host -t 'bash -l -c "forever"'

您可以通过man ssh阅读:

如果指定了命令,则在远程主机上执行,而不是 一个登录外壳。

没有login shell 没有rc-files.bashrc.bash_profile 等)所以可能没有你期望拥有的$PATH

要阅读有关登录 shell 的更多信息,请查看 man bash 并搜索 -l 选项说明。

【讨论】:

  • 我不认识 Jenkins,但我建议检查一下,因为它可能有一个强制使用登录 shell 的选项。
  • 谢谢大家,我明天早上试试。
  • 嗯,插件中似乎没有任何选项可以更改 Jenkins 通过 SSH 连接的方式。
  • 你试过用bash -l -c包裹forever吗?
猜你喜欢
  • 2015-08-02
  • 1970-01-01
  • 1970-01-01
  • 2013-08-09
  • 1970-01-01
  • 2015-12-08
  • 1970-01-01
  • 2014-04-07
  • 2014-01-28
相关资源
最近更新 更多