bash 스크립트에서 nvm 명령을 사용할 수 없음


39

nvm노드를 설치할 스크립트를 작성하려고합니다 . cURL과 함께
설치 nvm했습니다. .profile또는 .bashrc파일 의 수정 사항 (둘 다 작동) nvm을보고 bash 프롬프트에서 at을 입력하면 사용 가능한 옵션 등이 표시됩니다.
따라서 nvm이 작동합니다. 수동으로 노드를 설치할 수 있지만 nvm명령을 쉘 스크립트에 넣 자마자 :

nano test.sh

#!/bin/bash
nvm

다음과 같이 실행하십시오.

chmod 755 test.sh
./test.sh

나는 얻다:

./test.sh: line 2: nvm: command not found

그것을 찾을 수 없다면 nvm, 나는 생각조차 할 필요조차 없다.

nvm ls-remote 

또는

nvm install ...

우분투 14.04를 설치했으며 Bash는 내 쉘입니다.


nvm을 호출하기 전에 스크립트의 경로를 인쇄하고 올바른지 확인했습니다.
AProgrammer

답변:


69

nvmcommand는에 선언 된 쉘 함수입니다 ~/.nvm/nvm.sh.

처음 시작할 때 다음 스크립트 중 하나를 사용하여 nvm()사용할 수 있습니다.

. ~/.nvm/nvm.sh
. ~/.profile
. ~/.bashrc
. $(brew --prefix nvm)/nvm.sh  # if installed via Brew

안녕, 고마워 이것은 nvm이 ~ / .nvm에 "설치"되었으므로 의미가 있습니다. 그리고 아마도 쉘 스크립트 일 것입니다. 내가 누락 된 것은 nvm을 입력하여 작동시킬 수 있지만 ~ / .nvm에서 쉘 스크립트를 시도하면 작동하지 않는다는 것입니다.
okidoki

무슨 소리 야 trying the shell scripts in ~/.nvm? nvm위의 쉘 스크립트에서 실행하는 방법을 설명했습니다 . 불분명 한 것이 있습니까?
webKnjaZ

내 마지막 의견을 설명합니다. "sudo find / -iname nvm *"을 실행하면 ~ / .nvm 폴더에서만 항목을 찾습니다. ~ / .nvm / nvm-exec 또는 ~ / .nvm / nvm.sh (~ / .nvm의 유일한 파일 인 쉘 스크립트 임)를 실행해도 "nvm"을 입력하는 것처럼 nvm이 표시되지 않습니다. 명령 행. nvm과 프로그램 사이의 링크는 어디에 있습니까?
okidoki

아 .. 내 생각 nvm입니다 alias쉘 환경은. 출력을 게시하면 which nvm문제가 해결됩니다.
webKnjaZ

2
nvm로컬에 설치 하고 조사했습니다. nvm은에서 선언 된 쉘 함수 nvm.sh이므로 기본적으로 . ~/.nvm/nvm.sh스크립트 시작 부분에서 소스를 지정하면됩니다 (또는 위에서 언급 한 것처럼 .profile.bashrc
-source

2

OSX에서 brew를 통해 설치 한 경우 brew sourced 스크립트를 설치에 대한 세부 사항으로 소싱하여 스크립트 env에로드 할 수 있습니다.

나는 그것들을 부트 스트랩하는 프로젝트에 이것을 가지고있다 :

brew install nvm
. $(brew --prefix nvm)/nvm.sh
nvm install
...

1

@webKnjaZ에서 제공하는 답변 위에 작은 설명 선 : 모든 명령에 대해 쉘 함수를 소싱하여 내 bash 스크립트에서 작동시켜야했습니다. 이 같은:

. ~/.nvm/nvm.sh --version
. ~/.nvm/nvm.sh install 4.4.5

1
그것은 나를 위해 작동하지 않았다. ~ / .nvm / nvm.sh nvm --version
jeff musk

0

같은 일이 저에게 일한 것입니다.

root @ ubuntu : / usr / src / playground # n = $ (어떤 노드); n = $ {n % / bin / node}; chmod -R 755 $ n / bin / *; sudo cp -r $ n / {bin, lib, share} / usr / local

root @ ubuntu : / usr / src / playground # sudo npm install express '/usr/src/playground/package.json'+ express@4.16.2는 129.186s에 49 개의 패키지를 추가했습니다.

위의 명령은 약간 복잡하지만 nvm을 통해 활성화 한 모든 노드 버전을 / usr / local / 디렉토리 (사용자가 설치 한 전역 파일이 Linux VPS에 있어야 함)에 복사하고 권한을 설정하기 만하면됩니다. 모든 사용자가 액세스 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.