Câu trả lời chính
Có, để trả lời câu hỏi của bạn, có thể sử dụng JavaScript làm ngôn ngữ kịch bản "thông thường" từ dòng lệnh mà không cần trình duyệt. Vì những người khác chưa đề cập đến nó, tôi thấy rằng nó đáng được đề cập:
Trên các hệ thống dựa trên Debian (và điều này bao gồm Ubuntu, Linux Mint và aptosid / sidux, ít nhất), bên cạnh các tùy chọn cài đặt Rhino và các tùy chọn khác đã được đề cập, bạn có các tùy chọn khác:
Cài đặt libmozjs-24-bin
gói, sẽ cung cấp cho bạn công cụ Spidermonkey của Mozilla trên dòng lệnh dưới dạng đơn giản js24
, cũng có thể được sử dụng như một trình thông dịch tương tác. (Tên 24
trong đó có nghĩa là nó tương ứng với phiên bản 24 của Firefox).
Cài đặt libv8-dev
gói, sẽ cung cấp cho bạn động cơ V8 của Google. Nó là một trong những ví dụ của nó, tập tin /usr/share/doc/libv8-dev/examples/shell.cc.gz
mà bạn có thể giải nén và biên dịch rất đơn giản (ví dụ g++ -Os shell.cc -o shell -lv8
:).
Cài đặt gói nodejs
và nó sẽ có sẵn cả dưới dạng thực thi nodejs
và thay thế (theo nghĩa của Debian) để cung cấp js
tệp thực thi. Biên soạn JIT được cung cấp như một phép lịch sự của V8.
Cài đặt gói libjavascriptcoregtk-3.0-bin
và sử dụng trình thông dịch JavaScriptCore của WebKit ( jsc
) làm trình thông dịch thông thường từ dòng lệnh. Và điều này là không cần phải có quyền truy cập vào máy Mac. Trên nhiều nền tảng (ví dụ: x86 và x86_64), trình thông dịch này sẽ đi kèm với trình biên dịch JIT.
Vì vậy, gần như không có phần biên dịch, bạn sẽ có ba trong số các công cụ JavaScript nặng theo ý của bạn.
Phụ lục
Khi bạn đã cài đặt mọi thứ, bạn chỉ cần tạo các tệp với #!/usr/bin/js
dòng shebang và mọi thứ sẽ chỉ hoạt động:
$ cat foo.js
#!/usr/bin/js
console.log("Hello, world!");
$ ls -lAF /usr/bin/js /etc/alternatives/js /usr/bin/nodejs
lrwxrwxrwx 1 root root 15 Jul 16 04:26 /etc/alternatives/js -> /usr/bin/nodejs*
lrwxrwxrwx 1 root root 20 Jul 16 04:26 /usr/bin/js -> /etc/alternatives/js*
-rwxr-xr-x 1 root root 1422004 Apr 28 20:31 /usr/bin/nodejs*
$ chmod a+x foo.js
$ ./foo.js
Hello, world!
$ js ./foo.js
Hello, world!
$