2012-07-30 16 views
6

Se si esegue ssh nel VPS come utente di distribuzione ed è in esecuzione bundle -v, viene visualizzato Bundler version 1.1.5 come previsto.non trovato tramite ssh

Se corro ssh [email protected] bundle -v, poi vedo bash: bundle: command not found

Perché non è impacchettare viene mostrato l'esecuzione di comandi tramite ssh?

Ulteriori informazioni

$ 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 

risposta

4

Quando si esegue:

ssh [email protected] 

Si ottiene una shell di login sulla macchina remota, il che significa che la shell verrà eseguito (... per bash. ..) .bash_profile o .profile o equivalenti COME ANCHE il file di inizializzazione per shell.

Quando si esegue:

ssh [email protected] some_command 

Questo non si avvia una shell di login, in modo da funziona solo il file di inizializzazione per-shell (per esempio, .bashrc).

Il problema descritto in genere indica che è necessario qualcosa nel file .profile (in genere un'impostazione di variabile di ambiente) affinché tutto funzioni.

0

.profile viene caricato solo per le shell di accesso.

ssh [email protected] 

vi darà una shell di login, ma

ssh [email protected] bundle -v 

non lo faranno.

si potrebbe mettere la bellezza rbenv in .bashrc, ma se si tratta di un solo colpo che fare potrebbe essere più pulita solo per virare al tuo comando ssh in questo modo:

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