bash -c nvm이 작동하지 않습니다

bash -c nvm이 작동하지 않습니다

설치했고 nvm내 파일에 추가되었습니다./home/www-data/.bashrc

전화가 nvm작동합니다.

bash
nvm

공장

하지만

$ bash -c nvm
bash: nvm: command not found

작동하지 않습니다.

rcfile을 지정할 때도 마찬가지입니다.

$ bash  --rcfile /home/www-data/.bashrc -c "nvm"
bash: nvm: command not found

왜 그런 겁니까?

최종 결과에서는 RoboFile exec() 명령에서 nvm을 사용하고 실제 스크립트가 아닌 bash 함수이기 bash -c때문에 이를 래핑하려고 했습니다.nvm

답변1

왜 그런 겁니까?

으로 호출하면 -cbash는 다음과 같이 실행됩니다.비대화형껍데기. 기본 대화형 셸 시작 파일( /etc/bash.bashrc, ~/.bashrc)은 읽혀지지 않습니다. 강제로 ~/.bashrc읽어도 본문은 실행되지 않을 가능성이 높습니다. 예를 들어 기본 Ubuntu 본문(계정 생성 중 /etc/skel에서 복사됨)에는 다음 줄이 포함됩니다.

# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac

이는 다음의 모든 것을 우회합니다.

~할 수 있었다를 사용하여 대화형 셸을 강제로 bash -ic실행하지만 .bashrc.

답변2

노력하다

bash -ic nvm

Bash를 대화형 셸로 실행그리고명령을 제공하는 것은 bash 문서를 준수하지 않는 것 같지만 작동합니다.

답변3

나는로 전환했다https://www.npmjs.com/package/n이 경우에는 훨씬 더 잘 작동합니다.

nvm이는 모든 bash 스크립팅에 대한 대안 이며 필요하지 않습니다. 이것이 아마도 위의 문제 없이도 작동하는 이유입니다.

n다음 명령으로 설치할 수 있습니다.

npm install -g n

관련 정보