2016-02-04 40 views
0

我试图让capistrano使用chruby但我不断收到错误bundle stderr: /bin/sh: 1: chruby: not found将capistrano执行命令的正确位置是什么?

我需要运行source /usr/local/share/chruby/chruby.sh,使外壳可以找到命令chruby。

我已经通过this了解并了解交互/非交互式shell,登录/非登录shell。从逻辑上讲,我不想使用pty: true,所以我试图使用$BASH_ENV,但仍然是相同的错误。另外,我意识到没有人这样做。

回答

0

我在Ubuntu 14.04上使用rbenv,但我想象你的设置可能类似。我的解决办法是把rbenv外壳初始化逻辑在我的部署用户的.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 

要注意的重要一点是,rbenv代码甚至非交互shell执行,因为它放在交互式检查之前。

那么你很可能做同样的事情,在那里你把chruby脚本顶部:

source /usr/local/share/chruby/chruby.sh 

# If not running interactively, don't do anything 
case $- in 
    *i*) ;; 
     *) return;; 
esac 

我没有用过chruby,所以借此与一粒盐。

相关问题