전체 경로 제공은 작동하지 않지만 프로그램 이름만 호출하면 작동합니다. 이유는 무엇입니까?

전체 경로 제공은 작동하지 않지만 프로그램 이름만 호출하면 작동합니다. 이유는 무엇입니까?

내가 무엇을 놓치고 있나요? 명령줄에서 "rvm"을 호출할 수 있지만 which rvm사용 중인 전체 경로를 인용할 수는 없습니다.

상관은 없지만 항상 "jenkins"로 로그인되어 있고 명령이 계속 실행됩니다.

$ whoami
jenkins

RVM은 여기에 있습니다

$ which rvm
/home/jenkins/.rvm/bin/rvm

이게 효과가 있어

$ rvm use 1.8.7
Using /home/jenkins/.rvm/gems/ruby-1.8.7-p370
Running /home/jenkins/.rvm/hooks/after_use

하지만 이건 작동하지 않아

$ /home/jenkins/.rvm/bin/rvm use 1.8.7
RVM is not a function, selecting rubies with 'rvm use ...' will not work.
You need to change your terminal settings to allow shell login.
Please visit https://rvm.io/workflow/screen/ for example.

예, 참조된 링크를 방문했지만 그것이 나에게 어떻게 적용되는지 모르겠습니다.

답변1

which rvm이라는 실행 파일을 찾으세요 rvm. 실행 파일은 실행 시 단순히 "RVM은 함수가 아닙니다..." 메시지를 출력합니다.

rvm이는 셸의 함수일 수도 있고 별칭일 수도 있습니다. 이는 귀하의 파일 ~/.bashrc(시스템 전체 /etc/bash.bashrc또는 포함된 파일 중 하나)에 정의되어 있습니다. rvm명령이 무엇인지 확인하려면 type rvm또는 를 실행하세요 command -v rvm.

당신은 또한 볼 수 있습니다whichalias 명령에 사용하는 방법은 무엇입니까 ?

답변2

rvm use어떤 버전의 Ruby를 사용해야 하는지 나타내기 위해 환경 변수를 수정하여 작업하세요. 이는 함수로 실행될 때만 수행될 수 있습니다. 전체 경로 또는 정의되지 않은 기능을 사용하여 명령으로 실행하면 작동하지 않습니다. 이는 별도의 프로세스로 실행되는 경우 프로세스가 자체 환경 복사본을 갖게 되기 때문입니다. 이 복사본은 수정되지만 프로세스가 종료되면 즉시 손실됩니다.

답변3

방금 추가했어요

#!/bin/bash --login 

대본 초반에는 허드슨에서 작업 중이었습니다. 이제 모든 것이 잘 작동합니다! :)

관련 정보