shell第一句话#!/usr/bin/python3的作用


在 Python 脚本的第一行经常见到这样的注释:
#!/usr/bin/env python3
或者
#!/usr/bin/python3

含义

  在脚本中, 第一行以 #! 开头的代码, 在计算机行业中叫做 “shebang”, 也叫做 sha-bang / hashbang / pound-bang / hash-pling, 其作用是"指定由哪个解释器来执行脚本"。

为什么要指定解释器?

  举个例子, 很多人在系统中同时安装了 Python2 和 Python3, 但是 2 和 3 是不兼容的, 所以执行脚本时必须指定解释器。
  再比如说, Unix 系统中一般同时安装了多个版本的 Shell, 比如常用的 bash、sh 和 现代的 zsh, 但是这些 shell 的语法并不完全相同, 所以也需要指定解释器。

如何指定解释器?

  • 1.执行脚本的时候直接指定解释器:
python3 ./hello.py

如果要传入参数,写在后面就可以,空格隔开

python3 ./hello.py para1 para2

这种方法适用于windows和linux。

  • 2.用#!来指定解释器(即sha-bang)
    这种方法仅限于linux系统。
    在这里插入图片描述
    这里我特意将文件后缀写为txt,就是为了说明,在linux里文件后缀是什么一点儿也不重要,重要的是文件内容,这里文件没有后缀结果也一模一样。
    在windows里,不存在sha-bang这种用法,目前都是使用第一种方法。
  • 3.如果既在终端指定了释义器,同时文件内又有sha-bang,参考链接中以终端指定的释义器为准,但是我的实际验证并不是,而是会报错。。。下图可知,我的python2是存在的,但是由于文件内的sha-bang写的是python3,于是报错了~为什么呢?参考链接中的说法其实是正确的。报错是说print语法错误。
    在这里插入图片描述
    python2和python3语法差别很大。将文本改为:
#!/home/zy/Downloads/anaconda/python3
import sys
print "Hello World"
for i in sys.argv:
   print(i)

在这里插入图片描述
这正好说明了终端指定释义器后,#!这一行会直接跳过。

参考链接

感谢原文作者。
https://www.jianshu.com/p/400c612381dd

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值