perintah nvm tidak tersedia dalam skrip bash

39

Saya mencoba membangun sebuah skrip di mana nvmdan akhirnya node akan diinstal.
Saya telah menginstal nvmdengan CURL. Saya melihat modifikasi dalam file .profileatau .bashrc(keduanya berfungsi) dan ketika mengetikkan nvmdi bash prompt, itu menunjukkan opsi yang tersedia dll.
Jadi nvm berfungsi. Secara manual saya dapat menginstal node, tetapi segera setelah saya menempatkan nvmperintah dalam skrip shell:

nano test.sh

#!/bin/bash
nvm

dan jalankan dengan:

chmod 755 test.sh
./test.sh

Saya mendapat:

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

Jika tidak dapat menemukan nvm, saya bahkan tidak perlu memikirkan

nvm ls-remote 

atau

nvm install ...

Saya menginstal Ubuntu 14.04 dan Bash adalah shell saya.

okidoki
sumber
Saya akan mencetak path dalam skrip sebelum memanggil nvm dan memeriksa apakah sudah benar.
Pemrogram

Jawaban:

70

nvmperintah adalah fungsi shell dideklarasikan di ~/.nvm/nvm.sh.

Anda dapat menggunakan salah satu dari skrip berikut di awal skrip Anda untuk menyediakan nvm():

. ~/.nvm/nvm.sh
. ~/.profile
. ~/.bashrc
. $(brew --prefix nvm)/nvm.sh  # if installed via Brew
webKnjaZ
sumber
HI, terima kasih. Ini masuk akal kemudian karena nvm "diinstal" di ~ / .nvm. Dan mungkin hanya skrip shell. Apa yang saya lewatkan adalah saya bisa mengetik nvm dan membuatnya berfungsi, tetapi ketika mencoba skrip shell di ~ / .nvm itu tidak berfungsi.
okidoki
apa yang Anda maksud dengan trying the shell scripts in ~/.nvm? Saya menjelaskan cara menjalankan nvmdari skrip shell di atas. Adakah yang tidak jelas?
webKnjaZ
Untuk menguraikan komentar terakhir saya. ketika saya "sudo find / -iname nvm *" Saya hanya menemukan hal-hal di folder ~ / .nvm saya. Mengeksekusi ~ / .nvm / nvm-exec atau ~ / .nvm / nvm.sh (satu-satunya file dalam ~ / .nvm, yang ternyata berupa skrip shell) tidak memberikan saya nvm, seperti hanya mengetik "nvm" di baris perintah. Jadi di mana hubungan antara nvm dan program.
okidoki
Oh .. saya kira nvmada aliasdi lingkungan shell Anda. Silakan posting output which nvmdan ini akan menghapus semuanya.
webKnjaZ
2
Saya telah menginstal nvmsecara lokal dan melakukan riset. nvmadalah fungsi shell yang dideklarasikan nvm.sh, jadi pada dasarnya Anda hanya perlu . ~/.nvm/nvm.sh.profile.bashrc
mengisinya
2

Jika Anda menginstalnya melalui brew di OSX, maka Anda dapat memuat skrip bersumber brew ke skrip env dengan sumbernya saat perincian di instal.

Saya punya ini dalam proyek untuk bootstrap mereka:

brew install nvm
. $(brew --prefix nvm)/nvm.sh
nvm install
...
IanVaughan
sumber
1

Callout kecil di atas jawaban yang disediakan oleh @webKnjaZ: Saya harus mencari fungsi shell untuk setiap perintah untuk membuatnya berfungsi dalam skrip bash saya. Sesuatu seperti ini:

. ~/.nvm/nvm.sh --version
. ~/.nvm/nvm.sh install 4.4.5
rahulthakur319
sumber
1
itu tidak berhasil untuk saya. Yang berikut ini bekerja untuk saya: ~ / .nvm / nvm.sh nvm --version
jeff musk
0

Hal yang sama terjadi di bawah adalah hal yang bekerja untuk saya:

root @ ubuntu: / usr / src / playground # n = $ (simpul mana); n = $ {n% / bin / simpul}; chmod -R 755 $ n / bin / *; sudo cp -r $ n / {bin, lib, bagikan} / usr / local

root @ ubuntu: / usr / src / playground # sudo npm install express '/usr/src/playground/package.json' + [email protected] menambahkan 49 paket dalam 129.186s

Perintah di atas agak rumit, tetapi semua yang dilakukannya adalah menyalin versi apa pun dari simpul yang telah Anda aktifkan melalui nvm ke direktori / usr / local / (di mana pengguna menginstal file global harus hidup di VPS linux) dan mengatur izin sehingga semua pengguna dapat mengaksesnya.

ABHISHEK SHARMA
sumber