쉘 스크립트에서 호출될 때 Ruby를 가져와 RVM 기본 Ruby를 확인하는 방법

쉘 스크립트에서 호출될 때 Ruby를 가져와 RVM 기본 Ruby를 확인하는 방법

내 루비 프로그:

#echoHW.rb
while 1 < 2
  sleep(10)
  puts "hey!"
end

이를 호출하는 bash(?) 스크립트:

#echoHW.sh
ruby -v
ruby echoHW.rb "$@" & 

나는 "단일 사용자"와 "다중 사용자" 모드를 모두 시도하면서 rvm을 설치했습니다. 기본값은 1.9.3p125로 설정되어 있지만, 무엇을 하든 이를 실행하면 1.8.7이 실행됩니다. 이는 분명히 Ruby의 "시스템" 버전입니다.

나는 이것이 쉬운 수정이라고 생각합니다. 스크립트가 RVM을 사용하여 기본값으로 설정한 루비를 호출하도록 하고 싶지만 당황스럽습니다.

티아

편집: rvm info의 출력:

qe2user@qe2server:~/Ruby/query_engine$ rvm 정보

루비-1.9.3-p125:

시스템: uname: "Linux qe2server 2.6.32-33-server #70-Ubuntu SMP Thu Jul 7 22:28:30 UTC 2011 x86_64 GNU/Linux" bash: "/bin/bash => GNU bash, 버전 4.1.5 (1)-릴리스 (x86_64-pc-linux-gnu)" zsh: " => 설치되지 않음"

rvm: 버전: "rvm 1.12.3(안정) by Wayne E. Seguin, Michal Papis [htps://rvm.io/]" 업데이트: "13시간 39분 42초 전"

ruby: 인터프리터: "ruby" 버전: "1.9.3p125" 날짜: "2012-02-16" 플랫폼: "x86_64-linux" 패치 레벨: "2012-02-16 개정 34643" full_version: "ruby 1.9.3p125 (2012 -02-16 개정판 34643) [x86_64-linux]"

주택: 보석: "/usr/local/rvm/gems/ruby-1.9.3-p125" 루비: "/usr/local/rvm/rubies/ruby-1.9.3-p125"

바이너리: 루비: "/usr/local/rvm/rubies/ruby-1.9.3-p125/bin/ruby" irb: "/usr/local/rvm/rubies/ruby-1.9.3-p125/bin/irb" gem: "/usr/local/rvm/rubies/ruby-1.9.3-p125/bin/gem" rake: "/usr/local/rvm/gems/ruby-1.9.3-p125@global/bin/rake"

환경: 경로: "/usr/local/rvm/gems/ruby-1.9.3-p125/bin:/usr/local/rvm/gems/ruby-1.9.3-p125@global/bin:/usr/local/ rv /rubies/ruby-1.9.3-p125/bin:/usr/local/rvm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin: /bin:/usr/games" GEM_HOME: "/usr/local/rvm/gems/ruby-1.9.3-p125" GEM_PATH: "/usr/local/rvm/gems/ruby-1.9.3-p125:/usr /local/rvm/gems/ruby-1.9.3-p125@global" MY_RUBY_HOME: "/usr/local/rvm/rubies/ruby-1.9.3-p125" IRBRC: "/usr/local/rvm/rubies/ruby -1.9.3-p125/.irbrc" RUBYOPT: "" 보석 세트: ""

답변1

RVM에서 기본 Ruby 인터프리터를 올바르게 설정한 것 같지 않습니다. 예를 들어 RVM이 올바르게 설치된 경우:

# Assumes that 1.9.3-p125 is already fully-installed under RVM.
rvm --default use ruby-1.9.3-p125

이렇게 하면 시스템 기본값이 아닌 지정된 Ruby가 사용됩니다. rvm use쉘 프롬프트에서 언제든지 현재 Ruby를 변경할 수 있습니다 .

하지만 스크립트 내에서 기본값이 아닌 다른 것을 사용하려면 RVM을 사용하여 현재 Ruby를 설정하는 다른 셸 스크립트로 스크립트를 래핑할 수 있습니다. 이것이 옵션이 아닌 경우 shebang 회선에서 직접 특정 통역사를 호출할 수도 있습니다.

#!/home/user/.rvm/rubies/ruby-1.9.3-p125/bin/ruby

rvm info그러나 다양한 라이브러리와 gem이 작동하도록 하려면 MY_RUBY_HOME 및 RUBY_VERSION(전체 목록 참조)과 같은 일부 환경 변수를 조작해야 할 수도 있습니다 .

환경 수정은 필요할 수도 있고 필요하지 않을 수도 있습니다. Ruby 스크립트가 수행하는 작업에 따라 많은 것이 달라집니다.~이다필요한 경우 모든 것이 함께 작동할 때까지 명령줄에서 다양한 옵션을 사용할 수 있습니다. 예를 들어:

$ MY_RUBY_HOME=~/.rvm/rubies/ruby-1.9.3-p125 \
    ~/.rvm/rubies/ruby-1.9.3-p125/bin/ruby -e 'puts("hello")'
hello

또한 프로젝트에 대해 읽어보세요..rvmrc파일. 이는 작업 환경이 특정 애플리케이션에 필요한 Ruby 및 gemset을 사용하고 있는지 확인하는 또 다른 방법입니다.

관련 정보