2012-10-29 20 views
0

,直到我運行/ bin/bash後,我才能運行任何rails命令;見下文Ruby On rails:每次登錄服務器時,需要在任何rails命令之前運行/ bin/bash

Last login: Mon Oct 29 16:28:07 2012 from natint3.company.com 
[email protected] [~]# rails -v 
/usr/lib64/ruby/site_ruby/1.8/rubygems.rb:926:in `report_activate_error': Could not find RubyGem rails (>= 0) (Gem::LoadError) 
    from /usr/lib64/ruby/site_ruby/1.8/rubygems.rb:244:in `activate_dep' 
    from /usr/lib64/ruby/site_ruby/1.8/rubygems.rb:236:in `activate' 
    from /usr/lib64/ruby/site_ruby/1.8/rubygems.rb:1307:in `gem' 
    from /usr/bin/rails:18 
[email protected] [~]# rvm info 

ruby-1.9.3-p194: 

system: 
uname:  "Linux box726.bluehost.com 2.6.32-20120131.55.1.bh6.x86_64 #1 SMP Tue Jan 31 15:43:27 EST 2012 x86_64 x86_64 x86_64 GNU/Linux" 
system:  "unknown/libc-2.12/x86_64" 
bash:  "/ramdisk/bin/bash => GNU bash, version 4.1.2(1)-release (x86_64-redhat-linux-gnu)" 
zsh:   "/usr/bin/zsh => zsh 4.3.10 (x86_64-redhat-linux-gnu)" 

rvm: 
version:  "rvm 1.16.17 (stable) by Wayne E. Seguin <[email protected]>, Michal Papis <[email protected]> [https://rvm.io/]" 
updated:  "4 hours 10 minutes 5 seconds ago" 

ruby: 
interpreter: "ruby" 
version:  "1.9.3p194" 
date:   "2012-04-20" 
platform:  "x86_64-linux" 
patchlevel: "2012-04-20 revision 35410" 
full_version: "ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux]" 

homes: 
gem:   "/home3/user1/.rvm/gems/ruby-1.9.3-p194" 
ruby:   "/home3/user1/.rvm/rubies/ruby-1.9.3-p194" 

binaries: 
ruby:   "/home3/user1/.rvm/rubies/ruby-1.9.3-p194/bin/ruby" 
irb:   "/home3/user1/.rvm/rubies/ruby-1.9.3-p194/bin/irb" 
gem:   "/home3/user1/.rvm/rubies/ruby-1.9.3-p194/bin/gem" 
rake:   "/home3/user1/.rvm/rubies/ruby-1.9.3-p194/bin/rake" 

environment: 
PATH:   "/home3/user1/.rvm/gems/ruby-1.9.3-p194/bin:/home3/user1/.rvm/gems/[email protected]/bin:/home3/user1/.rvm/rubies/ruby-1.9.3-p194/bin:/home3/user1/.rvm/bin:/usr/local/jdk/bin:/home3/user1/perl5/bin:/usr/lib64/qt-3.3/bin:/ramdisk/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11R6/bin:/home3/user1//ruby/gems/bin:/home3/user1//ruby/gems:/home3/user1/bin" 
GEM_HOME:  "/home3/user1/.rvm/gems/ruby-1.9.3-p194" 
GEM_PATH:  "/home3/user1/.rvm/gems/ruby-1.9.3-p194:/home3/user1/.rvm/gems/[email protected]" 
MY_RUBY_HOME: "/home3/user1/.rvm/rubies/ruby-1.9.3-p194" 
IRBRC:  "/home3/user1/.rvm/rubies/ruby-1.9.3-p194/.irbrc" 
RUBYOPT:  "" 
gemset:  "" 


[email protected] [~]# 

和我跑/斌/慶典之後,我有一個不同的行爲

[email protected] [~]# /bin/bash 
[email protected] [~]# rails -v 
Rails 3.2.8 
[email protected] [~]# rvm info 

RVM is not a function, selecting rubies with 'rvm use ...' will not work. 

You need to change your terminal emulator preferences to allow login shell. 
Sometimes it is required to use `/bin/bash --login` as the command. 
Please visit https://rvm.io/integration/gnome-terminal/ for a example. 


system: 

system: 
uname:  "Linux box726.bluehost.com 2.6.32-20120131.55.1.bh6.x86_64 #1 SMP Tue Jan 31 15:43:27 EST 2012 x86_64 x86_64 x86_64 GNU/Linux" 
system:  "unknown/libc-2.12/x86_64" 
bash:  "/ramdisk/bin/bash => GNU bash, version 4.1.2(1)-release (x86_64-redhat-linux-gnu)" 
zsh:   "/usr/bin/zsh => zsh 4.3.10 (x86_64-redhat-linux-gnu)" 

rvm: 
version:  "rvm 1.16.17 (stable) by Wayne E. Seguin <[email protected]>, Michal Papis <[email protected]> [https://rvm.io/]" 
updated:  "4 hours 11 minutes 9 seconds ago" 

homes: 
gem:   "/home3/user1//ruby/gems" 
ruby:   "/home3/user1/.rvm/rubies/ruby-1.9.3-p194" 

binaries: 
ruby:   "/home3/user1/.rvm/rubies/ruby-1.9.3-p194/bin/ruby" 
irb:   "/home3/user1/.rvm/rubies/ruby-1.9.3-p194/bin/irb" 
gem:   "/home3/user1/.rvm/rubies/ruby-1.9.3-p194/bin/gem" 
rake:   "/home3/user1/.rvm/rubies/ruby-1.9.3-p194/bin/rake" 

environment: 
PATH:   "/usr/local/jdk/bin:/home3/user1/.rvm/gems/ruby-1.9.3-p194/bin:/home3/user1/.rvm/gems/[email protected]/bin:/home3/user1/.rvm/rubies/ruby-1.9.3-p194/bin:/home3/user1/.rvm/bin:/home3/user1/perl5/bin:/usr/lib64/qt-3.3/bin:/ramdisk/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11R6/bin:/home3/user1//ruby/gems/bin:/home3/user1//ruby/gems:/home3/user1/bin" 
GEM_HOME:  "/home3/user1//ruby/gems" 
GEM_PATH:  "/home3/user1//ruby/gems:/usr/lib64/ruby/gems/1.8" 
MY_RUBY_HOME: "/home3/user1/.rvm/rubies/ruby-1.9.3-p194" 
IRBRC:  "/home3/user1/.rvm/rubies/ruby-1.9.3-p194/.irbrc" 
RUBYOPT:  "" 
gemset:  "" 


[email protected] [~]# 

任何人有一個想法,這是怎麼回事,我該如何解決這個問題?

感謝

EDIT1

這裏是我的.bashrc和.bash_profile文件中的內容

[email protected] [~]# cat ~/.bashrc 
# .bashrc 

# User specific aliases and functions 

# Source global definitions 
if [ -f /etc/bashrc ]; then 
    . /etc/bashrc 
fi 

    export HPATH=/home3/user1/ 
    export GEM_HOME=$HPATH/ruby/gems 
    export GEM_PATH=$GEM_HOME:/usr/lib64/ruby/gems/1.8 
    export GEM_CACHE=$GEM_HOME/cache 
    export PATH=$PATH:$HPATH/ruby/gems/bin 
    export PATH=$PATH:$HPATH/ruby/gems 

PATH=$PATH:/home3/user1/.rvm/bin # Add RVM to PATH for scripting 

PATH=$PATH:$HOME/.rvm/bin # Add RVM to PATH for scripting 
[email protected] [~]# cat ~/.bash_profile 
# .bash_profile 

# Get the aliases and functions 
if [ -f ~/.bashrc ]; then 
    . ~/.bashrc 
fi 

# User specific environment and startup programs 

PATH=$PATH:$HOME/bin 

export PATH 
unset USERNAME 


[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function* 
[email protected] [~]# 
+0

你的默認shell是什麼? 'rvm'使用只適用於bash但不適用於sh或tcsh的東西。你應該通過'/ etc/passwd'來更改你的默認shell。 – Pablo

+0

感謝Pablo的回覆。你能指導我如何檢查默認的外殼和如何改變它? – rh4games

+0

打開一個終端並鍵入'echo $ SHELL'。這應該顯示你的運行shell。你也可以'grep <你的用戶名>/etc/password'。最後一個條目(最後一個冒號後面的一個)是您的默認外殼。 – Pablo

回答

2

這看起來像一個路徑問題給我。當您第一次運行rails時,它會在您的本地rvm副本之前找到全局rubygems安裝。

從命令行運行/bin/bash之後,您將啓動一個交互式shell,該shell會執行源代碼(執行)~/.bashrc。我的猜測是,它包含使用登錄shell登錄時無法運行的rvm初始化。

看看~/.bash_profile~/.bashrc。下面是最新的RVM安裝程序生成的內容:

$ cat ~/.bashrc 
PATH=$PATH:$HOME/.rvm/bin # Add RVM to PATH for scripting 

$ cat ~/.bash_login 
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function* 
export NODE_PATH=/usr/local/lib/node_modules 
if [ -f ~/.bashrc ]; then 
    source ~/.bashrc 
fi 

如果這是你得到了什麼,那麼你以某種方式通過一個交互的shell,而不是登錄登錄shell(如何???)。您應該能夠解決這兩個問題source ~/.bash_profile(在OS X中爲.bash_login)。

+0

感謝jordanpg的回覆。我編輯了我的原始問題並添加了我的.bashrc和.bash_profile文件內容;我希望這能幫助你提出改變的建議。謝謝 – rh4games

+0

我試過source〜/ .bash_profile(Linux),但我仍然有相同的錯誤模式。 – rh4games

+0

我仍然認爲這是一個路徑問題。嘗試預先添加rvm路徑,而不是將它們附加到現有路徑的末尾。 – jordanpg