#/bin/python是运行什么命令的?求大牛详解。。。
初学Python,练习的时候遇到这个,被鄙视,呜呜~~~~~~~~~~~~~~恨没姿势,求涨~~
回复内容:
首先,楼主,你打漏了一个字符,正确的是
#!/bin/python要了解这行是干啥用的,得先了解一个“魔数(magic number)”的概念。
每一种文件,在文件开头,都有一个标识文件类型的字节序列,标识这个文件是什么类型的。这个字节序列叫““魔数”。
像unix下的脚本,这个魔数就是
"#!"。这个魔数的英文名叫
“Shebang”。操作系统的文件解释器在加载文件时,先要判断文件是什么类型的,然后再加载特定的文件解释器,来解读这个文件。操作系统的文件解释器判断的依据,就是看这个魔数。
所以,当看到"#!"时,操作系统的文件解释器知道这是一个“脚本”。
那具体用哪一种脚本解释器呢?它继续读。
结果发现/bin/python。
也就是要用/bin/python 这个路径下的一个叫“python”的解释器来解释这个文件。
于是操作系统的文件解释器就加载了这个python解释器。 然后操作系统的文件解释器任务就完成了。
当python解释器被加载运行后,它自己来解释这个文件。
这时,它看到第一行: #!/bin/python
它认得一开头的#是标记注释行开始的记号,所以它认为这是一行注释,就直接跳过。
然后开始执行后续的真正的python指令。
综上,这一行,被两个层次的解释器以不同的形式解释。
这就是一行注释!
在#后面加上!才是解释器定义。
这是你在linux/unix系统下运行一个脚本的时候,告诉系统用什么解释器来运行脚本用的
比如你执行一个脚本
<code class="language-text">$ ./script
</code>
登入後複製
#!/bin/python 不是命令,是定义Python解释器位置的。就是告诉系统在什么地方可以找到用于这个脚本的Python解释器。
比如,#!/bin/python3 是定义Python3位置的。
我一般这么写,#!/use/bin/env python
这样可以让系统协助寻找Python解释器,可以在多个系统里面通用。
你用的什么教材?换一本吧,没解释这句的书就不用看了
提醒 UNIX系统 用 /bin/python 来解释执行这个脚本
<code class="language-text">head -1 abc.sh
#! /bin/bash
</code>
登入後複製