关于文件头 #!/usr/bin/env python 和 #!/usr/bin/python

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
回复
lotreal
帖子: 19
注册时间: 2009-03-24 9:55

关于文件头 #!/usr/bin/env python 和 #!/usr/bin/python

#1

帖子 lotreal » 2009-07-30 14:17

首先向大家问好,又来麻烦大侠们了。 :em06

请问py 文件头上的 #!/usr/bin/env python 和 #!/usr/bin/python 这种注释有学名吗?想去查查为什么要写这个。
另外,上面这两种写法除了字母不同,其它完全一样吗?
soiamso
帖子: 418
注册时间: 2008-09-06 2:00

Re: 关于文件头 #!/usr/bin/env python 和 #!/usr/bin/python

#2

帖子 soiamso » 2009-07-30 14:19

linux下所有脚本文件只有一个类型 "文本"

linux下文件的执行与文件名没有关系
lotreal
帖子: 19
注册时间: 2009-03-24 9:55

Re: 关于文件头 #!/usr/bin/env python 和 #!/usr/bin/python

#3

帖子 lotreal » 2009-07-30 14:23

果然,测试了一下。连 emacs 都是首先根据这个注释得到文件类型

另外请问这两种写法那种好点:
#!/usr/bin/env python

#!/usr/bin/python
lotreal
帖子: 19
注册时间: 2009-03-24 9:55

Re: 关于文件头 #!/usr/bin/env python 和 #!/usr/bin/python

#4

帖子 lotreal » 2009-07-30 14:30

google 到结果了,谢谢 soiamso 的指点。
結果今天在使用的時候才明白:
bash 有的時候會放在不是 /usr/bin 底下,所以下 env bash 可以給出如果 bash 不在 /usr/bin/ 底下的情況,還能使用 bash 做 interpreter。
同樣的情況也會發生在 php/pike 的身上。

像是有的時候 php cli 不是自已裝的,script 就會寫在
#!/usr/bin/php ,可是這個 script 拿到別台機器 php cli 是放在 /usr/local/bin/ 底下的就出問題啦。
所以寫做 #!/usr/bin/env php 就可以帶來一種安全的便利。
回复