왜 /이 오류를 수정합니까? "shell_session_update : command not found"


24

배경

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)) 세션에서도 다시 시작하지 않고도 제대로 작동하는 것 같습니다. 그 후 그 세션을 닫고 새 터미널 세션을 만들었으며 위에서 언급 한 다양한 명령을 실행할 때 메시지가 계속 표시됩니다.


shell_session_update에서 OS X에 의해 설치된 Bash 함수 /etc/bashrc_Apple_Terminal이므로, RVM이 실행하는 Bash 명령에서 출력으로 생성되는 것 같습니다.
Zanchey

답변:


41

TL; DR : 명령을 다시 설치하거나 실행하여 RVM이 1.26.11 이상 rvm get head이고 터미널 환경 당 한 번 씩만 초기화 되는지 확인하십시오 .

결과

결국 나는 환경을 고칠 수있었습니다. 다른 사람들은 증상이 같지만 근본 원인이 다른 경우에도 도움을주기 위해 특정 문제와 관련된 정보를 게시 할 것입니다.

원인

루트 문제의 한 부분은 RVM에서 왔으며 명령 줄 환경에서 초기화되는 방법입니다. 특히 fish셸 환경을 위해 특별히 제작 된 방법이 하나 있기 때문에 몇 가지 방법으로이 작업을 수행했습니다 .

근본 원인은 다음 중 하나 인 것 같습니다.

  • 터미널 구성 파일 당 하나씩 여러 명령문이 있고 연결 방법으로 인해 RVM을 두 번 이상 초기화하는 경우 자동으로 추가 된 다른 항목을 알지 못했습니다.
  • 또는 어떤 터미널 환경에 대한 초기화를 혼합하고 fish다른 터미널 환경에서 실행 중이 bash거나 그 반대의 문장이 추가되었습니다 . 이 깨진 곳 아래에있는 내 세부 사항에서 볼 수있는 bashPATH에 의해 구분 된 경로의 일부가 :잘못된 구문 인 공백들,하지만 다른 사람도 포함 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에서 수정되어야합니다.

이야기

파일 시스템을 완전히 검색하고 파일 내용을 엿보기 위해 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 (!)에 있다는 것을 잊지 말고 문제에 기여하지 않는 것 같습니다.

환경을 설정하는 올바른 방법은 다음과 같습니다.

자세한 내용은

좀 더 놀라운 정보를 얻으려면 다음은 문제를 디버깅하는 동안 다른 환경에서 캡처 한 몇 가지 경로입니다.

오리지널 (깨진) 생선 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 get head다음 rvm reinstall {version}각 버전에 나를 위해 고정 결국
TomFuertes

1
컬 설치 방법을 사용하는 경우 :curl -sSL https://get.rvm.io | bash -s head --ruby
rynop

이 답변은 금입니다. 유용하고 철저합니다.
TehShrike

bash-git-prompt를 설치 한 후이 "문제"가있었습니다. rvm을 다시 설치하면 naaah가 너무 많은 것 같습니다 . 그래서 방금 <rvm sourcing line>끝으로 이사 했습니다 .bash_profile. 결정된.
AD

나는 보통 여기에 언급 된이 다른 오류 메시지를 수정 한 것을 발견했다 : stackoverflow.com/questions/18276701/… “경고! PATH가 제대로 설정되지 않았습니다.”다른 곳에 어딘가에 소싱 라인이있어이 문제와 더 유사 할 수 있습니까? 그것은 정확히 말이되지는 않지만 어떤 것도 가능합니다.
Pysis

5

나도 같은 문제가 있었다. 나중에 rvm repo에 이미 문제가 있음을 발견했습니다. 그리고 그들은 풀 요청 중 하나에서 그것을 고쳤습니다.

이 문제를 해결하려면 rvm을 최신 버전으로 업그레이드하거나 현재 개발 개정판을 가리 킵니다.

rvm get head

자세한 내용은 이 게시물을 참조하십시오 .


1
링크에서 관련 부품을 인용 해 주시겠습니까? 그렇지 않으면 자신의 블로그를 홍보하려는 것처럼 보입니다.
Burgi

이것은 트래비스에서 작동하지 않습니다. github.com/travis-ci/travis-ci/issues/9511
timotheecour
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.