我使用的是Ubuntu 14.04。今天我有了一个惊人的发现:我可以执行没有文件扩展名的python文件!
例如
$ echo " print 'hello' " > z
$ python z
hello
那么,我们为什么需要文件扩展名?除了在语义上告诉人们这是什么文件之外,它对文件还有真正的影响吗?
答案1
如果您说的是扩展名,那么 Linux 使用扩展名的方式与 Windows 不同,事实上,扩展名在 Linux 中没有任何意义,只是文件名的一部分。它们仍然被大量使用,以便人们更容易识别文件。不使用扩展名的一个常见情况是二进制可执行文件(您可以使用python
而不是python.exe
)。
运行脚本有两种方式:
从 shell 调用(
./scriptname.py
):在脚本中,第一行将会显示类似以下内容的内容#!/usr/bin/python
。#!
指示内核使用后续文件作为脚本的解释器。从http://en.wikipedia.org/wiki/Shebang_%28Unix%29
Shebang 实际上是可执行文件中魔法数字的人类可读实例,魔法字节字符串为 0x23 0x21,即 #! 的 ASCII 双字符编码。此魔法数字由“exec”函数系列检测,这些函数确定映像文件是脚本还是可执行二进制文件。Shebang 的存在将导致执行指定的可执行文件,通常是脚本语言的解释器。
使用脚本作为参数调用解释器 (
python scriptname
)。如果执行此操作,则启动解释器,并明确告诉它要运行哪个脚本。脚本可以是任何文件,具有任何“扩展名”。