我总是有这个疑问,我不知道为什么创建一个简单的 http 服务器的 bin 文件夹中的文件没有 .js 扩展名。
这背后有什么原因吗?
unix 上的传统是可执行文件没有扩展名。
例如,在 Linux 和 MacOS 上列出您键入的目录:
ls
Run Code Online (Sandbox Code Playgroud)
你不打字
ls.exe
Run Code Online (Sandbox Code Playgroud)
另一个示例,要在 Linux 上启动 Dropbox 服务,您可以键入
dropbox
Run Code Online (Sandbox Code Playgroud)
你不打字
dropbox.py
Run Code Online (Sandbox Code Playgroud)
尽管 dropbox 只是一个包含 Python 代码的文本文件。
Unix(以及 Windows 上的 bash 终端)有一个功能,如果文件被标记为可执行文件(使用chmod命令)并且第一行包含:
#!
Run Code Online (Sandbox Code Playgroud)
.. 然后 shell(控制命令行的程序)将删除前两个字符 ( #!) 并执行第一行的其余部分。这通常称为 shbang 线(sh = shell,!= bang)。
因此,如果你想在 node.js 中开发一个命令行程序,你需要做的就是使用以下命令启动文件#! /usr/bin/env node:
#! /usr/bin/env node
// ^
// |
// the 'env' command will find the correct install path of node
console.log('hello world');
Run Code Online (Sandbox Code Playgroud)
然后使用chmod使文件可执行:
chmod +x my-script.js
Run Code Online (Sandbox Code Playgroud)
当然,创建一个以 结尾的程序.js看起来并不“专业”。例如,gulp.js运行 gulpnpm.js时不键入,运行npm. 所以人们遵循传统,让他们的可执行脚本没有扩展名——这让人们更难意识到你没有用 C 或汇编语言编写程序。
| 归档时间: |
|
| 查看次数: |
380 次 |
| 最近记录: |