通过ssh找不到包

时间:2012-07-30 22:03:42

标签: ssh bundler

如果我以部署用户身份登录我的VPS并运行bundle -v,我会按预期获得Bundler version 1.1.5

如果我运行ssh deployment@123.123.123.123 bundle -v,那么我会看到bash: bundle: command not found

为什么没有显示通过ssh运行命令的捆绑包?

更多信息

$ cat ~/.bashrc

# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples

if [ -d "${RBENV_ROOT}" ]; then
  export PATH="${RBENV_ROOT}/bin:${PATH}"
  eval "$(rbenv init -)"
fi

# If not running interactively, don't do anything
[ -z "$PS1" ] && return

2 个答案:

答案 0 :(得分:4)

当你跑步时:

ssh deployment@123.123.123.123

您在远程主机上获得了一个登录shell,这意味着您的shell将运行(... for bash ...).bash_profile.profile或等效的AS以及您的每个shell初始化文件。

当你跑步时:

ssh deployment@123.123.123.123 some_command

这不会启动登录shell,因此它只运行per-shell初始化文件(例如.bashrc)。

您所描述的问题通常意味着您需要.profile文件中的某些内容(通常是环境变量设置)才能生效。

答案 1 :(得分:0)

.profile仅为登录shell加载。

ssh deployment@123.123.123.123

会给你一个登录shell,但是

ssh deployment@123.123.123.123 bundle -v

不会。

你可以把rbenv可爱放在.bashrc中,但是如果这是一次性的交易,那么将它添加到你的ssh命令可能会更清晰:

ssh deployment@123.123.123.123 "export PATH=\$HOME/.rbenv/bin:\$PATH; eval \"\$(rbenv init -)\"; bundle -v"