배경
OS X El Capitan (10.11.3)을 사용하는 MacBook에서 Ruby 2.x 및 Rails 4.x에 생선 껍질을 사용하여 다음 페이지에 나열된 통합을 사용합니다. RVM-Fish Shell (Integration)
문제
다양한 명령을 실행할 때 등은 rvm version
, rvm install ...
, rvm use ...
, rvm --default ...
, 등, 나는 다음과 같은 오류 메시지가 나타납니다 :
/var/folders/2w/zhgybz7d25s1gdy41qdxwp48001gfh/T/rvm.fish.Pqd0CuZRJW: shell_session_update: command not found
빠른 Google 검색은 다른 많은 개발 설정 문제와 마찬가지로 문제를 식별 및 / 또는 해결하는 데 도움이되는 관련 결과를 반환하지 않습니다.
rvm.fish
함수 파일, .config/fish
디렉토리 및 $HOME/.rvm/bin/rvm
기본 실행 파일 에서 빠른 텍스트 검색을 수행 shell_session_update
했으며 해당 파일에서 직접 호출되는 것과 같은 명령을 보지 못했습니다 .
의문
왜 이런 일이 발생하는지, 어떻게 해결할 수 있는지 알고 있습니까? 나는 내 앞에있는 것을 고치기를 좋아하는 사람이므로 내가해야 할 일만 내 앞에 나타나므로이 오류 / 경고 메시지를 제거하고 싶습니다. 🙂
추신 : 내가 설치하고 사용하려고 한 특정 Ruby 버전 (2.0.0)은 동일한 터미널 (iTerm (2)) 세션에서도 다시 시작하지 않고도 제대로 작동하는 것 같습니다. 그 후 그 세션을 닫고 새 터미널 세션을 만들었으며 위에서 언급 한 다양한 명령을 실행할 때 메시지가 계속 표시됩니다.
답변
TL; DR : 명령을 다시 설치하거나 실행하여 RVM이 1.26.11 이상 rvm get head
이고 터미널 환경 당 한 번 씩만 초기화 되는지 확인하십시오 .
결과
결국 나는 환경을 고칠 수있었습니다. 다른 사람들은 증상이 같지만 근본 원인이 다른 경우에도 도움을주기 위해 특정 문제와 관련된 정보를 게시 할 것입니다.
원인
루트 문제의 한 부분은 RVM에서 왔으며 명령 줄 환경에서 초기화되는 방법입니다. 특히 fish
셸 환경을 위해 특별히 제작 된 방법이 하나 있기 때문에 몇 가지 방법으로이 작업을 수행했습니다 .
근본 원인은 다음 중 하나 인 것 같습니다.
- 터미널 구성 파일 당 하나씩 여러 명령문이 있고 연결 방법으로 인해 RVM을 두 번 이상 초기화하는 경우 자동으로 추가 된 다른 항목을 알지 못했습니다.
- 또는 어떤 터미널 환경에 대한 초기화를 혼합하고
fish
다른 터미널 환경에서 실행 중이bash
거나 그 반대의 문장이 추가되었습니다 . 이 깨진 곳 아래에있는 내 세부 사항에서 볼 수있는bash
PATH에 의해 구분 된 경로의 일부가:
잘못된 구문 인 공백들,하지만 다른 사람도 포함bash
하지만, 대한 올바른fish
. - 아니면 둘 다 일어나고있었습니다!
그런 다음 루트 문제의 다른 부분은 RVM / direnv 관련 버그가 최근 트랩 기능과 관련하여 생성 된 것 같습니다. 아마도 다음과 같은 원인이 될 수있는 다른 문제가있는 RVM 릴리스 중 하나를 사용하여이 문제가 다시 발생했을 수 있습니다.
- 다시 설치 :
curl -sSL https://get.rvm.io | bash
- 수동 업데이트 :
rvm get head
- 에 추가
rvm_autoupdate_flag=2
하여 자동 업데이트 (방금 수행 한)~/.rvmrc
이 문제는 2016 년 3 월 30 일 또는 릴리스 1.26.11에서 수정되어야합니다.
- GitHub-direnv / direnv-문제 : / bin / bash : shell_session_update : 명령을 찾을 수 없습니다 # 210
- GitHub-rvm / rvm-문제 : RVM이 OS X El Capitan # 3540에 정의 된 bash 종료 트랩을 덮어 씁니다.
- GitHub-rvm / rvm-문제 : .bash_profile의 OSX (El Capitan) rvm 소스가 .bash_history 글을 작성 함 (Terminal.app) # 3560
- GitHub-rvm / rvm-풀 요청 : OSX 10.11+ # 3627에서 bash 세션 관련 버그
- GitHub-rvm / rvm-문제 : ~ / .bash_sessions_disable을 처리해야합니다. # 3628
- GitHub-rvm / rvm-문제 : 안정적인 업데이트 # 3655 후 피쉬 쉘 오류
- GitHub-rvm / rvm-문제 : 존재하지 않는 명령으로 트랩하지 마십시오 # 3657
- GitHub-rvm / rvm-릴리스 : 변경 사항 비교 1.26.11..master
- 종료, 업데이트 # 3657, 업데이트 # 3628에서 shell_session_update 후크 정리 복원
이야기
파일 시스템을 완전히 검색하고 파일 내용을 엿보기 위해 GNU 유틸리티와 싸우고 난 후, Atom을 사용하여 더 많은 성공을 거두었 으며 Zanchey가 언급 한 파일 shell_session_update
에서 /etc/bashrc_Apple_Terminal
히스토리 파일 외에 유일한 발견이 발견되었습니다. 등). 그게 내가하여 ITerm (2)를 사용했기 때문에 실행중인 이유 또한없는 확신, 그리고 값 $TERM_PROGRAM
이 경우에는 iTerm.app
하지 Apple_Terminal
.
또한 어떤 이유로 든 설치 프로세스를 통해 RVM 설치를 두 번 이상 관리해야한다는 사실을 알지 못했습니다. 설치 프로세스를 통해 이미 여러 ‘도트 파일’에 구성을 추가하는 것으로 나타났습니다. 여기서 일부 또는 줄을 수동으로 추가했습니다. .
그와 함께 필자는 기본적으로 존재하지 않았기 때문에 .bashrc
파일 을 만들어 .bash_profile
내 Mac 에서 파일로 연결했습니다 . 이전에는 Linux 시스템 .bash_profile
에서 일부 사용자 정의에 적합하고 .bashrc
사용자 별명 및 기능 정의와 같은 다른 시스템에 적합하거나 그 반대로도 읽었습니다 . 그래서 .bash_profile
파일, 특히 .profile
파일이 아닌 모든 파일을 사용자 디렉토리에서 보는 데 익숙 하지 않았습니다 . 또한 a path_helper
가 mix (!)에 있다는 것을 잊지 말고 문제에 기여하지 않는 것 같습니다.
환경을 설정하는 올바른 방법은 다음과 같습니다.
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
export PATH="$PATH:$HOME/.rvm/bin"
(PATH
제어가 사용자에게 전달되기 직전에 변수 를 수정하는 마지막 행으로) .rvm default
(또한 마지막으로 할 필요가PATH
-modifying 라인에서 :. StackOverflow에 – 얻기 RVM 사용을 2.0.0 –default을 할 때 “경고 PATH가 제대로 설정되지 않았습니다!” )
자세한 내용은
좀 더 놀라운 정보를 얻으려면 다음은 문제를 디버깅하는 동안 다른 환경에서 캡처 한 몇 가지 경로입니다.
오리지널 (깨진) 생선 PATH
/Users/username/.rvm/gems/ruby-2.0.0-p648/bin /Users/username/.rvm/gems/ruby-2.0.0-p648@global/bin /Users/username/.rvm/rubies/ 루비 -2.0.0-p648 / bin /Users/username/.rvm/bin / usr / local / bin / usr / bin / bin / usr / sbin / sbin / usr / local / munki /Users/username/.rvm/ 큰 상자
‘자연스럽게’더 나은 물고기 경로
/ usr / local / opt / coreutils / libexec / gnubin / usr / local / opt / findutils / bin / usr / local / bin / usr / bin / bin / usr / sbin / sbin / usr / local / munki
원래 (깨진) bash PATH
/libexec/gnubin:/bin:/Users/username/.rvm/gems/ruby-2.0.0-p648/bin /Users/username/.rvm/gems/ruby-2.0.0-p648@global/bin / Users /username/.rvm/rubies/ruby-2.0.0-p648/bin /Users/username/.rvm/bin / usr / local / bin / usr / bin / bin / usr / sbin / sbin / usr / local / munki : / 사용자 / 사용자 이름 /.rvm/bin
‘수동으로’고정 된 bash PATH
/libexec/gnubin:/bin:/Users/username/.rvm/gems/ruby-2.0.0-p648/bin:/Users/username/.rvm/gems/ruby-2.0.0-p648@global/bin : / Users / 사용자 이름 /.rvm/rubies/ruby-2.0.0-p648/bin:/Users/ 사용자 이름 /.rvm/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin : /sbin:/usr/local/munki:/Users/username/.rvm/bin:/Users/username/.rvm/bin
‘자연스럽게’더 나은 bash 경로
/ usr / local / opt / coreutils / libexec / gnubin : / usr / local / opt / findutils / bin : / usr / local / opt / coreutils / libexec / gnubin : / usr / local / opt / findutils / bin : / usr / local / bin : / usr / bin : / bin : / usr / sbin : / sbin : / usr / local / munki
노트:
- ‘원본’은 문제를 겪으면서 명령 줄 인터프리터에서 새로운 환경을 시작한 것입니다.
- ‘수동’은 물론 잘못된 경로 문자열을 가져 와서 구문 오류를 수정하고 해석기의보다 적절한 작동을 보았으므로 근본 원인을 계속 고칠 때 무엇을 기대 해야하는지 알았습니다.
- ‘자연스러운 것’은 터미널 환경 구성 파일 등을 처음으로 건너 뛰고 처음
.bashrc
에는 문제가 해결 된 후에 실행되었습니다.
답변
나도 같은 문제가 있었다. 나중에 rvm repo에 이미 문제가 있음을 발견했습니다. 그리고 그들은 풀 요청 중 하나에서 그것을 고쳤습니다.
이 문제를 해결하려면 rvm을 최신 버전으로 업그레이드하거나 현재 개발 개정판을 가리 킵니다.
rvm get head
자세한 내용은 이 게시물을 참조하십시오 .