我想让capistrano
使用chruby
,但我一直收到错误bundle stderr: /bin/sh: 1: chruby: not found
我需要运行source /usr/local/share/chruby/chruby.sh
,以便shell可以找到命令chruby。
我已经完成this,并了解交互/非交互式shell,登录/非登录shell。从逻辑上讲,我不想使用pty: true
,所以我尝试使用$BASH_ENV
,但仍然是同样的错误。而且,我意识到没有人这样做。
答案 0 :(得分:0)
我在Ubuntu 14.04上使用rbenv
,但我想你的设置可能类似。我的解决方案是将rbenv shell初始化逻辑放在我的部署用户.bashrc
的最顶端,如下所示:
if [ -d $HOME/.rbenv ]; then
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
fi
# If not running interactively, don't do anything
case $- in
*i*) ;;
*) return;;
esac
# ... snip
需要注意的重要一点是,即使对于非交互式shell ,rbenv代码也会执行,因为它是在交互式检查之前放置的。
所以你可以做同样的事情,把chruby脚本放在顶部:
source /usr/local/share/chruby/chruby.sh
# If not running interactively, don't do anything
case $- in
*i*) ;;
*) return;;
esac
我没有使用过chruby,所以带上一粒盐。