Saya telah menginstal node.js
di lokasi khusus dan menambahkan lokasi ke file $PATH
dalam .profile
.
$ node --version
v0.6.2
$ which node
$ echo $PATH
/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:~/Unix/homebrew/bin
$ cat ~/.profile
export PATH="$PATH:~/Unix/homebrew/bin"
Node.js sendiri berjalan dengan baik. Masalahnya adalah tidak terdaftar berdasarkan which
perintah. Jadi saya tidak bisa menginstal npm
sekarang. Karena npm
instal tidak dapat menemukan lokasi node.js
. Bagaimana saya bisa membuat node
biner ditemukan oleh which
?
which
tidak bersalah di sini; yang~
seharusnya diperluas dalam definisiPATH
. Ada keanehan di bash bahwa itu~
tetap memperluasPATH
, jadi dua kesalahan membuat hak, semacam.~
adalah keanehan bash. Memiliki yang literal~
dalam$PATH
kemungkinan penyebab masalah bawah garis karena ada program yang melakukan pemisahan mereka sendiri$PATH
dan mereka tidak memperlakukan~
khusus.~
", kalimat Anda menyesatkan. Dalam konteks$PATH
, ini adalah setiap program selain bash.Baris itu di Anda
.profile
harus menjadi salah satuThe
~
karakter hanya diperluas ke direktori home Anda ketika itu karakter pertama dari sebuah kata dan itu kuotasi. Dalam apa yang Anda tulis,~
ada di antara tanda kutip ganda dan karenanya tidak diperluas. Bahkan jika Anda menulisexport "PATH=$PATH:"~/Unix/homebrew/bin
,~
itu tidak akan diperluas karena itu bukan pada awal kata shell.Ada dispensasi khusus, yang dimaksudkan untuk menulis nilai untuk
PATH
dan variabel sejenis. Jika~
tepat setelah tanda sama dengan yang menandai tugas, atau jika~
hanya setelah tanda:
di sisi kanan tugas, maka itu diperluas. Hanya tugas sederhana yang memiliki dispensasi ini,export PATH=…
tidak masuk hitungan (ini adalah panggilan keexport
builtin, yang kebetulan memiliki argumen yang berisi=
karakter).Di sini, Anda tidak perlu mengekspor
PATH
karena sudah diekspor. Anda tidak perlu meneleponexport
saat Anda mengubah nilai variabel (kecuali di shell Bourne lama yang tidak akan Anda temukan di OSX atau Linux). Juga, dalam tugas (sekali lagi,export
tidak masuk hitungan), Anda tidak perlu tanda kutip ganda di sisi kanan, jadiPATH=$PATH:~/Unix/homebrew/bin
aman bahkan jika$PATH
berisi spasi.sumber