2012-07-30 9 views
6

Nếu tôi ssh vào VPS của mình với tư cách người dùng triển khai và chạy bundle -v Tôi nhận được Bundler version 1.1.5 như mong đợi.qua ssh

Nếu tôi chạy ssh [email protected] bundle -v, sau đó tôi thấy bash: bundle: command not found

Tại sao không được bó được hiển thị lệnh chạy qua ssh?

More Info

$ 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 

Trả lời

4

Khi bạn chạy:

ssh [email protected] 

Bạn nhận được một vỏ đăng nhập vào máy chủ từ xa, có nghĩa là vỏ của bạn sẽ chạy (... cho bash. ..) .bash_profile hoặc .profile hoặc tương đương AS WELL AS tệp khởi tạo cho mỗi trình bao của bạn.

Khi bạn chạy:

ssh [email protected] some_command 

này không bắt đầu một vỏ đăng nhập, vì vậy nó chỉ chạy các tập tin khởi tạo mỗi vỏ (ví dụ, .bashrc).

Sự cố bạn đã mô tả thường có nghĩa là bạn cần một thứ gì đó trong tệp .profile (thường là cài đặt biến môi trường) để mọi thứ hoạt động.

0

.profile chỉ được tải cho các shell đăng nhập.

ssh [email protected] 

sẽ cung cấp cho bạn một vỏ đăng nhập, nhưng

ssh [email protected] bundle -v 

sẽ không.

Bạn có thể đặt vẻ đẹp rbenv trong .bashrc, nhưng nếu đây là một một shot đối phó nó có thể là sạch hơn chỉ để tack nó vào lệnh ssh của bạn như vậy:

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