"Command not found" ketika menjalankan "lessc" dari bash

12

Saya telah menginstal lesscvia npm, Node.js Package Manager, dan ketika saya lari lesscdari terminal menggunakan

lessc /var/www/less/style.less /var/www/css/style.css

ini bekerja dengan sempurna.
Namun, ketika saya menempatkan perintah yang sama persis ini dalam skrip bash less.sh, itu mengembalikan kesalahan

lessc : command not found.

Juga, saya perlu menjalankan perintah ini dari skrip bash, karena incron, sebuah program yang saya gunakan untuk mengkompilasi ulang skrip saya yang lebih sedikit setiap kali mereka dimodifikasi, tidak dapat menjalankan perintah yang disebutkan di atas, yang saya percaya dapat disebabkan oleh metode aneh untuk menangani spasi di perintah.

slang
sumber
Skrip tidak berfungsi dijalankan di terminal yang sama di mana lesscberfungsi, atau dalam beberapa cara lain (cron, peluncur, Alt-F2, lainnya)?
enzotib
Ada backtick di akhir perintah Anda. Apakah kesalahan ketik ini hanya di sini atau apakah ini juga ada di less.sh Anda?
elmicha
ya backtick itu salah ketik. @enzotib apakah penting di mana skrip dijalankan, dan apakah itu mengubah apa pun yang dapat menyebabkan kesalahan yang disebutkan di atas?
Gaul
Ya itu penting. Dalam situasi yang berbeda, Anda dapat memiliki PATH yang berbeda.
enzotib
Terima kasih, setelah meneliti variabel $ PATH saya menemukan bahwa lessc ada di "/ opt / lessc / bin / lessc", yang perlu ditambahkan ke $ PATH.
Gaul

Jawaban:

7

Di mana "lessc" dapat dieksekusi? Melakukan:

type -p lessc

dan catat direktori tersebut, dan cari tahu di mana direktori itu ditambahkan ke PATH Anda. Saya pikir bash dan incron tidak sumber file setup Anda (.bashrc, dll) dengan cara yang sama. Membaca halaman manual Bash, bagian INVOCATION menjelaskan bagaimana bash menemukan file startupnya. Grep cepat melalui sumber incron menunjukkan bahwa ia tidak menyebutkan .bashrc atau .bash_profile.

Anda bisa mengubah perintah "lessc" di skrip Anda menjadi:

/actual/path/to/lessc

yang Anda temukan via

type -p lessc
waltinator
sumber
Atau tambahkan "/ aktual / path / ke / lessc /" ke $ PATH, dengan menggunakan perintah "PATH = $ PATH: / actual / path / ke / lessc /" di file bash. Dan terima kasih telah memposting itu sebagai jawaban (bukan komentar).
Gaul
21
npm install -g less

Itu menginstal Less.js secara global. Mungkin Anda sudah mencoba ini tetapi tidak ada dalam dokumentasi di http://lesscss.org/ ; Saya harus bertanya di # node.js di FreeNode.

Brian Lacy
sumber
Saya menjalankan perintah Anda di terminal ubuntu saya tetapi saya mendapat npm ERR! Menolak untuk menghapus: / usr / bin / lessc tidak di / usr / lib / node_modules / less File ada: / usr / bin / lessc Pindahkan, dan coba lagi. npm ERR! System Linux 3.2.0-90-generic-pae npm ERR! perintah "/ usr / bin / node" "/ usr / bin / npm" "install" "-g" "less" npm ERR! cwd / home / best npm ERR! node -v v0.10.40 npm ERR! npm -v 1.4.28 npm ERR! path / usr / bin / lessc npm ERR! kode EEXIST npm ERR! tidak ok kode 0
DaSaDiYa ChaiTAnYa
0

di lubuntu:

$ type -p lessc
$ lessc
El programa «lessc» no está instalado. Puede instalarlo escribiendo:
sudo apt-get install node-less
$ sudo apt-get install node-less
Enrique San Martín
sumber