2012-07-30 102 views
6

發現。束不通過SSH

如果我運行ssh [email protected] 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 

回答

4

當你運行:

ssh [email protected] 

你得到遠程主機,這意味着你的shell將運行(...對於bash的登錄shell。 ..).bash_profile.profile或同等學歷,以及你的每shell初始化文件。

當你運行:

ssh [email protected] some_command 

這不啓動登錄shell,所以它只能運行在每個外殼初始化文件(例如,.bashrc)。

你通常描述的問題意味着你需要在你的.profile文件的東西(通常是一個環境變量設置),其他所有的工作。

0

.profile文件只加載登錄shell。

ssh [email protected] 

會給你一個登錄shell,但

ssh [email protected] bundle -v 

不會。

你可以把rbenv可愛的.bashrc中,但如果這是一個錘子買賣,可能是清潔只是它釘住到您的ssh命令,如下所示:

ssh [email protected] "export PATH=\$HOME/.rbenv/bin:\$PATH; eval \"\$(rbenv init -)\"; bundle -v"