如果我以部署用户身份登录我的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
答案 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"