Lệnh nvm không có sẵn trong tập lệnh bash


39

Tôi đang cố gắng xây dựng một tập lệnh trong đó nvmvà cuối cùng nút sẽ được cài đặt.
Tôi đã cài đặt nvmvới cURL. Tôi thấy các sửa đổi trong tệp .profilehoặc .bashrc(cả hai đều hoạt động) và khi gõ nvmdấu nhắc bash, nó hiển thị các tùy chọn có sẵn, v.v ...
Vì vậy, nvm hoạt động. Theo cách thủ công tôi có thể cài đặt nút, nhưng ngay khi tôi đặt nvmlệnh trong tập lệnh shell:

nano test.sh

#!/bin/bash
nvm

và chạy nó với:

chmod 755 test.sh
./test.sh

Tôi có:

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

Nếu nó không thể tìm thấy nvm, tôi thậm chí không phải nghĩ về

nvm ls-remote 

hoặc là

nvm install ...

Tôi đã cài đặt Ubuntu 14.04 và Bash là vỏ của tôi.


Tôi sẽ in đường dẫn trong tập lệnh trước khi gọi nvm và kiểm tra xem nó có đúng không.
AProgrammer 12/2/2015

Câu trả lời:


69

nvmlệnh là một hàm shell được khai báo ~/.nvm/nvm.sh.

Bạn có thể lấy một trong các tập lệnh sau khi bắt đầu tập lệnh của mình để nvm()cung cấp:

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

HI, cảm ơn. Điều này có ý nghĩa khi nvm được "cài đặt" trong ~ / .nvm. Và có lẽ chỉ là một kịch bản shell. Điều tôi còn thiếu là tôi có thể gõ nvm và làm cho nó hoạt động, nhưng khi thử các kịch bản shell trong ~ / .nvm thì nó không hoạt động.
okidoki

ý bạn là trying the shell scripts in ~/.nvmgì Tôi đã giải thích làm thế nào để chạy nvmtừ kịch bản shell ở trên. Có điều gì không rõ ràng?
webKnjaZ

Để giải thích bình luận cuối cùng của tôi. khi tôi "sudo find / -iname nvm *" Tôi chỉ tìm thấy những thứ trong thư mục ~ / .nvm của mình. Thực thi ~ / .nvm / nvm-exec hoặc ~ / .nvm / nvm.sh (các tệp duy nhất trong ~ / .nvm, hóa ra là các tập lệnh shell) không cho tôi nvm, giống như chỉ gõ "nvm" dòng lệnh. Vậy đâu là liên kết giữa nvm và chương trình.
okidoki

Oh .. tôi đoán nvmlà một aliastrong môi trường vỏ của bạn. Xin vui lòng gửi đầu ra which nvmvà điều này sẽ xóa mọi thứ.
webKnjaZ

2
Tôi đã cài đặt nvmtại địa phương và thực hiện một số nghiên cứu. nvmlà một hàm shell được khai báo nvm.sh, vì vậy về cơ bản, bạn chỉ cần nhập nó . ~/.nvm/nvm.shvào lúc bắt đầu tập lệnh của mình (hoặc, như tôi đã viết ở trên, - source .profile/ .bashrc)
webKnjaZ

2

Nếu bạn đã cài đặt nó thông qua brew trên OSX, thì bạn có thể tải tập lệnh brew có nguồn gốc vào tập lệnh env bằng cách tìm nguồn cung cấp khi nó chi tiết về bản cài đặt.

Tôi có điều này trong các dự án để khởi động chúng:

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

1

Chú thích nhỏ trên đầu câu trả lời được cung cấp bởi @webKnjaZ: Tôi đã phải lấy hàm shell cho mọi lệnh để làm cho nó hoạt động trong tập lệnh bash của tôi. Một cái gì đó như thế này:

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

1
nó không làm việc cho tôi Sau đây làm việc cho tôi: ~ / .nvm / nvm.sh nvm --version
jeff xạ hương

0

Điều tương tự xảy ra ở bên dưới là điều làm việc cho tôi:

root @ ubfox: / usr / src / sân chơi # n = $ (nút nào); n = $ {n% / bin / nút}; chmod -R 755 $ n / thùng / *; sudo cp -r $ n / {bin, lib, chia sẻ} / usr / cục bộ

root @ ubfox: / usr / src / sân chơi # sudo npm install express '/usr/src/playground/package.json' + express@4.16.2 đã thêm 49 gói trong 129.186

Lệnh trên hơi phức tạp, nhưng tất cả những gì nó đang làm là sao chép bất kỳ phiên bản nút nào bạn đã kích hoạt qua nvm vào thư mục / usr / local / (nơi người dùng đã cài đặt các tệp toàn cầu sẽ nằm trên VPS linux) và đặt quyền để sao cho tất cả người dùng có thể truy cập chúng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.