文章目录

  • 1.#!
  • 2.#!/usr/bin/python3和#!/usr/bin/env python3的区别:
  • 3.在终端中指定解释器和用#!指定
    • (1)终端中
    • (2)用#!指定
    • (3)优先级
  • Reference

1.#!

【用途】:用于“指定由哪个解释器来执行脚本” 。
在Unix中,凡是被#!注释的,统统是加载器(解释器)的路径。比如:#!/bin/bash(中间没有空格)的意思是说把下面的字符统统传递给/bin/bash解释器。

【常见】:

  • #!/bin/lua
  • #!/bin/perl
  • #!/bin/python3
  • #!/usr/bin/env python3
  • #!/bin/tcl

【注意】:必须指定在第一行才生效
有效:

#!/usr/bin/python3
print("hello #!")

无效1:


#!/usr/bin/python3
print("hello #!")

无效2:

# 无效
#!/usr/bin/python3
print("hello #!")

2.#!/usr/bin/python3和#!/usr/bin/env python3的区别:

  • #!/usr/bin/python3
    严格指定路径,告诉OS执行该script时,调用/usr/bin下的python3解释器。
  • #!/usr/bin/env python3:(推荐这种写法)
    为了防止OS-user没有将python3装在默认的/usr/bin路径里。当系统看到这一行的时候,首先会到env设置里查找python3的安装路径,再调用对应路径下的解释器程序完成操作。

3.在终端中指定解释器和用#!指定

(1)终端中

【代码内容】hello.py

print("hello console")

【执行】

python3 hello.py

python3就是在终端中指定解释器,我们是这样来执行hello.py

而这样不行:

【其他特性】:无视后缀

(2)用#!指定

【代码内容】hello.py

#!/usr/bin/python3
print("hello #!")

【执行】:
chmod +x hello.py赋予可执行权限,然后才可以直接执行。

【其他特性】:无视后缀

(3)优先级

控制台指定的优先级更高。

【代码内容】hello.py

#!/usr/bin/python3
print "hello #!"

print "hello #!"是python2特定的语法,Python3执行会报错。

【执行】

这正好说明了终端指定释义器后,#!这一行会直接跳过。


Reference

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

Linux中#!表示什么意思?相关推荐

  1. c++ 进程快照_如何在 Linux 中找出内存消耗最大的进程

    很多次,你可能遇见过系统消耗了过多的内存.如果是这种情况,那么最好的办法是识别出 Linux 机器上消耗过多内存的进程. -- Magesh Maruthamuthu(作者) 很多次,你可能遇见过系统 ...

  2. linux的tar中ztvf,linux中的tar命令(2)

    实例4:只将 /tar 内的 部分文件解压出来 命令: tar -zxvf /opt/soft/test/log30.tar.gz log2013.log 输出: [root@localhost te ...

  3. centos6.5 php5.2,Linux中PHP安装与配置(CentOS-6.5:php-5.2.13)

    1 PHP简介     PHP(PHP: Hypertext Preprocessor的缩写,中文名:"超文本预处理器")是一种通用开源脚本语言.语法吸收了C语言.Java和Per ...

  4. java 外部类似_[求指点] 如何用java 实现类似linux中管道调用外部程序的功能

    想写个小程序实现类似linux中管道的功能,创建一个外部子进程,然后主进程不断地写输入给子进程,而后把子进程的返回值取出. 如下的小代码就是从stdin读入一个字符串,调用子进程(cat)返回这个串, ...

  5. linux 修改java版本_Linux 有问必答:如何在 Linux 中改变默认的 Java 版本

    提问:当我尝试在Linux中运行一个Java程序时,我遇到了一个错误.看上去像程序编译所使用的Java版本与我本地的不同.我该如何在Linux上切换默认的Java版本? 当Java程序编译时,编译环境 ...

  6. linux ls 命令 路径,使用ls命令在Linux中使用完整路径列出文件

    许多人会发现,这是重复的问题,但我已经经历了所有问题,然后问及这个主题,但没有为我工作.使用ls命令在Linux中使用完整路径列出文件 我想打印使用ls命令的特定文件格式的完整路径名到目前为止,我发现 ...

  7. linux中的ln属性,linux 常用基础命令 ln 详细介绍

    命令介绍: ln是linux中又一个非常重要命令,ln是为某一个文件在另外一个位置建立一个同步的链接.当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我 ...

  8. linux内核定义的常用信号6,Linux中的信号

    在 Linux 中,理解信号的概念是非常重要的.这是因为,信号被用于通过 Linux 命令行所做的一些常见活动中.例如,每当你按 Ctrl+C 组合键来从命令行终结一个命令的执行,你就使用了信号.每当 ...

  9. linux用户空间 限制吗,在Linux中限制用户空间

    在Linux中限制用户的磁盘使用空间使用的是Quota,一般Quota在安装Linux时就已包括在内核中,不需要另行安装.Quota可以从两方面指定磁盘的储存限制: 使用者所能够支配的索引节点(ino ...

  10. Linux中的粘滞位

    Linux中的粘滞位 Sticky 位是一个访问权限标志位,可以用来标示文件和路径. 历史: 粘滞位是在1974年Unix的第5版中引入的,用来设置可执行文件.当可执行文件设置粘滞位之后,它能够指示操 ...

最新文章

  1. 技术图文:如何利用BigOne的API制作自动化交易系统 -- 获取账户资产
  2. rtmp Chunk stream ID 说明
  3. 文件菜单服务器属性,服务器属性(“数据库设置”页) - SQL Server | Microsoft Docs...
  4. sendmsg recvmsg函数
  5. Python基础篇【第6篇】: Python模块subprocess
  6. 鸿蒙os系统被推送,鸿蒙来了!华为大规模推送鸿蒙OS系统,造成网站一度瘫痪...
  7. 22 | 哈希算法(下):哈希算法在分布式系统中有哪些应用?
  8. 增加数据_咱晋城人口又增加了?最新数据来了
  9. mysql load data 乱码的问题
  10. 项目分享 | 好牛X的开源项目,看完忍不住分享(高手作品分享)
  11. 3年,从工程师到创始人
  12. 定位日站大法之-社会工程学
  13. Problem 1108 - 淼·诺贝尔
  14. python中read,readline,和readlines的区别 并逐行输出
  15. VMware虚拟机安装Win10系统后出现蓝屏
  16. [转]爬虫的现状和反爬虫
  17. 5款热门的远程控制软件,让你事半功倍
  18. 华为云云耀云服务器 中小企业的福音
  19. Wrong namespace. Expected 'cn.itheima.dao.CustomerMapping' 错误
  20. webpack加载css样式 ----css相关loader

热门文章

  1. 【附源码】计算机毕业设计SSM木棉堂水果电商平台
  2. 2020年软科中国大学排名
  3. PEX8796等设计资料
  4. angularjs承诺
  5. C++实现约分(化简比)
  6. Smart Jump插件
  7. 1271:【例9.15】潜水员
  8. linux设置分区读写属性,嵌入式Linux ubi文件系统制做、分区设置、只读文件系统,uboot启动参数root...
  9. 解决AttributeError: ‘NoneType‘ object has no attribute ‘val‘ if left.val!=right.val:Line 17 问题
  10. 布鲁斯口琴进阶教程资料分享