2012-07-30 2 views
6

Si je ssh dans mon VPS en tant qu'utilisateur de déploiement et exécutez bundle -v, j'obtiens Bundler version 1.1.5 comme prévu.lot introuvable via ssh

Si je cours ssh [email protected] bundle -v, je vois bash: bundle: command not found

Pourquoi bundle pas montré l'exécution de commandes via ssh?

Plus d'infos

$ 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 

Répondre

4

Lorsque vous exécutez:

ssh [email protected] 

Vous obtenez un shell de connexion sur l'hôte distant, ce qui signifie que votre shell fonctionnera (... pour bash. ..) .bash_profile ou .profile ou équivalent AS bien comme votre fichier d'initialisation par shell.

Lorsque vous exécutez:

ssh [email protected] some_command 

Cela ne démarre pas un shell de connexion, il ne fonctionne que le fichier d'initialisation par-shell (par exemple, .bashrc). Le problème que vous avez décrit signifie généralement que vous avez besoin de quelque chose dans votre fichier .profile (généralement un paramètre de variable d'environnement) pour que tout fonctionne.

0

.profile est chargé uniquement pour les shells de connexion.

ssh [email protected] 

vous donnera un shell de connexion, mais

ssh [email protected] bundle -v 

ne sera pas.

Vous pouvez mettre le loveliness de rbenv dans .bashrc, mais si cela est un coup face, il pourrait être juste pour virer de bord plus propre dans votre commande ssh comme ceci:

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