如何指示Capistrano 3加载我在远程主机上设置的shell环境变量?

p.m*_*los 12 ruby rvm-capistrano capistrano3

我想指示Capistrano加载在远程服务器上定义的环境变量.我怎样才能做到这一点?

似乎当我在环境变量中导出我的环境变量时.bashrc,它们不会被Capistrano考虑在内.Capistrano似乎正在执行a /usr/bin/env来创建执行远程命令的环境,但这似乎并没有从中加载环境变量.bashrc.

我也告诉你我也在使用rvm-capistrano(以防万一它可能有帮助).

任何线索?

Del*_*eko 27

虽然这个问题已经超过六个月了,但我会留在这里以防万一有人面临同样的问题.

Capistrano实际上确实加载了.bashrc.但是在文件顶部附近你会发现:

# If not running interactively, don't do anything
[ -z "$PS1" ] && return
Run Code Online (Sandbox Code Playgroud)

如果您export在该行之后执行任何操作,Capistrano将无法访问该行.解决方案只是将我的设置置于此之上,Capistrano就是我想要的.

在这个GitHub问题上也注意到了这个解决方案.


And*_*kas -1

Capistrano 无法加载,.bashrc因为它不是交互式 shell。据我记得,虽然它确实加载了,.bash_profile所以你使用它可能会有更好的运气。

  • 我刚刚在 Ubuntu Server 14.04.1 上尝试过,在 Capistrano 启动的 SSH 命令执行期间未加载 .bash_profile(.profile 和 .bashrc 也未加载)。还尝试从命令行手动运行 SSH。 (5认同)
  • 对我来说,它读取“.bashrc”,而不读取“.bash_profile”。我用的是CentOS。 (3认同)