精华内容
下载资源
问答
  • #!/usr/bin/env python

    千次阅读 2015-09-12 15:17:01
    脚本语言的第一行,目的就是指出,你想要你的这个文件中的代码用.../usr/bin/env python这种用法是为了防止操作系统用户没有将python装在默认的/usr/bin路径里。当系统看到这一行的时候,首先会到env设置里查找pytho

    脚本语言的第一行,目的就是指出,你想要你的这个文件中的代码用什么可执行程序去运行它,就这么简单

    #!/usr/bin/python是告诉操作系统执行这个脚本的时候,调用/usr/bin下的python解释器;
    #!/usr/bin/env python这种用法是为了防止操作系统用户没有将python装在默认的/usr/bin路径里。当系统看到这一行的时候,首先会到env设置里查找python的安装路径,再调用对应路径下的解释器程序完成操作。


    #!/usr/bin/python相当于写死了python路径;
    #!/usr/bin/env python会去环境设置寻找python目录,推荐这种写法




    #!/bin/bash是指此脚本使用/bin/bash来解释执行。
    其中,#!是一个特殊的表示符,其后,跟着解释此脚本的shell路径。
    bash只是shell的一种,还有很多其它shell,如:sh,csh,ksh,tcsh,...
    我们可以通过以下一个示例来进行实验,了解#!/bin/bash的使用。
    1)#!/bin/bash只能放在第一行,如果后面还有#!,那么只能看成是注释。
    这里有三个脚本(脚本都要使用”chmod +x   scriptname“命令来获得可执行权限):
    tbash1.sh:
    #!/bin/sh
    source abc
    echo "hello abc"

    tbash2.sh:
    #!/bin/bash
    source abc
    echo "hello abc"

    tbash3.sh:
    source abc
    echo "hello abc"

    三个脚本执行的结果:
    [nsvc@localhost other]$ ./tbash1.sh 
    ./tbash1.sh: line 2: abc: No such file or directory
    注:当source命令执行有问题时,sh不再往下面执行。
    [nsvc@localhost other]$ ./tbash2.sh 
    ./tbash2.sh: line 2: abc: No such file or directory
    hello abc
    注:当source命令执行有问题时,bash继续执行下面命令。
    [nsvc@localhost other]$ ./tbash3.sh 
    ./tbash3.sh: line 1: abc: No such file or directory
    hello abc
    注:自身登录系统所在的shell是bash。所以,当source命令执行有问题时,bash继续执行下面命令。

    如果将tbash1.sh改成:
    echo "abc"
    #!/bin/sh
    source abc
    echo "hello abc"
    那么,执行结果是:
    [nsvc@localhost other]$ ./tbash1.sh 
    abc
    ./tbash1.sh: line 3: abc: No such file or directory
    hello abc
    也就是说,脚本忽略了第二行“#!/bin/sh",直接使用当前所在的shell(也就是bash)来解释脚本。

    当把tbash1.sh改成:
    #!/bin/sh
    #!/bin/bash
    source abc
    echo "hello abc"
    执行结果为:
    [nsvc@localhost other]$ ./tbash1.sh 
    ./tbash1.sh: line 3: abc: No such file or directory
    当执行完source命令时,并没有往下执行。说明,#!/bin/sh这一行起到作用了,但#!/bin/bash并没有起作用。在脚本中,不在第一行的#!/bin/bash,只是一个注释。

    2)#!后面的路径一定要正确,不正确会报错。
    假如,我们把tbash1.sh中第一行的#!后面加了一个不存在的路径”/home/sh“:
    #!/home/sh
    source abc
    echo "hello abc"
    执行结果为:
    [nsvc@localhost other]$ ./tbash1.sh 
    -bash: ./tbash1.sh: /home/sh: bad interpreter: No such file or directory
    系统会提示/home/sh的路径不存在。

    3)如果一个脚本在第一行没有加上#!+shell路径这一行,那么,脚本会默认当前用户登录的shell,为脚本解释器。
    在1)中,脚本tbash3.sh的执行结果,就是用当前自己登录的shell(bash)解释后的结果。我们通常所用的shell都是bash,如果哪天登录到sh,再使用以上类型的脚本,就会有问题。以下是自己登录到sh下,执行tbash3.sh的结果:
    -sh-3.2$ ./tbash3.sh 
    ./tbash3.sh: line 1: abc: 没有那个文件或目录
    与1)中的执行结果是不一样的。
    因此,大家应该养成脚本首行加上#!+shell路径的习惯。

    4)/bin/sh相当于/bin/bash --posix
    我们将脚本tbash1.sh改为:
    #!/bin/bash --posix
    source abc
    echo "hello abc"
    执行结果:
    [nsvc@localhost other]$ ./tbash1.sh 
    ./tbash1.sh: line 2: abc: No such file or directory
    与tbash1.sh原脚本执行的结果一样。

    我们还可以以tbash3.sh为示例。
    用以下命令来执行该脚本:
    [nsvc@localhost other]$ bash tbash3.sh
    tbash3.sh: line 1: abc: No such file or directory
    hello abc
    [nsvc@localhost other]$ sh tbash3.sh 
    tbash3.sh: line 1: abc: No such file or directory
    [nsvc@localhost other]$ bash --posix tbash3.sh 
    tbash3.sh: line 1: abc: No such file or directory
      "bash tbash3.sh"表示使用bash来作为脚本解释器来执行tbash3.sh。同样,也可以使用如”sh 脚本名“这样的命令,来用sh作为脚本解释器。
    从结果可以看出,/bin/bash --posix与/bin/sh的执行结果相同。总结起来,sh跟bash的区别,实际上是bash有没开启posix模式的区别。遵守posix规范,可能包括,”当某行代码出错时,不继续往下执行。“

    最后加上一点说明,每个脚本开头都使用"#!",#!实际上是一个2字节魔法数字,这是指定一个文件类型的特殊标记,在这种情况下,指的就是一个可执行的脚本。在#!之后,接一个路径名,这个路径名指定了一个解释脚本命令的程序,这个程序可以是shell,程序语言或者任意一个通用程序。

    总结起来,要规规举举地按照秩序行。
    展开全文
  • /usr/bin/env python 与 #!/usr/bin/python 的作用和区别 都是放在Python程序的第一行,目的就是用来指定用什么解释器运行脚本以及解释器所在的位置,你想要你的代码用什么可执行程序去运行它 #!/usr/bin/python ...

    Python中 #!/usr/bin/env python 与 #!/usr/bin/python 的作用和区别

    都是放在Python程序的第一行,目的就是用来指定用什么解释器运行脚本以及解释器所在的位置,你想要你的代码用什么可执行程序去运行它

    #!/usr/bin/python 是告诉操作系统在执行这个脚本的时候,调用 /usr/bin 下的 python 解释器;相当于写死了 python 路径;

    #!/usr/bin/env python 这种用法是为了操作系统防止用户没有将python 装在默认的 /usr/bin 路径里。当系统看到这一行的时候,首先会到env设置里查找 python 的安装路径(从PATH环境变量中来查找python解释器的位置),再调用对应路径下的解释器程序完成操作。(推荐写法,比较灵活)

    总结:通常我们认为 #!/usr/bin/python 采用了绝对路径的写法,即指定了采用/usr/bin/python 解释器来执行该脚本。一般类Unix系统下,python解释器都位于该路径,不幸的是如果python解释器不在该路径下的话,./file.py 就无法运行。而 #!/usr/bin/env python 的写法指定从PATH环境变量中来查找python解释器的位置,因此只要环境变量中存在,该脚本即可执行。
    综述所述,一般情况下采用 #!/usr/bin/env python 的写法更好,更加具有通用性。

    展开全文
  • python中关于#!/usr/bin/env python2/3解释

    千次阅读 2018-03-21 20:10:10
    /usr/bin/env python2 # -*- coding:utf-8 -*-脚本语言的第一行作用是指定执行该脚本的解释器,通常会有以下几种不同的写法,效果相同:#!/usr/bin/python :是告诉操作系统执行这个脚本的时候,调用/usr/bin下的...

    Python脚本语言的一般都会以以下两行语句开头

    #!/usr/bin/env python2
    # -*- coding:utf-8 -*-
    脚本语言的第一行作用是指定执行该脚本的解释器,通常会有以下几种不同的写法,效果相同:
    #!/usr/bin/python :是告诉操作系统执行这个脚本的时候,调用/usr/bin下的python解释器;
    #!/usr/bin/env python :这种用法是为了防止操作系统用户没有将python装在默认的/usr/bin路径里。
    # 当系统看到这一行的时候,首先会到env设置里查找python的安装路径,再调用对应路径下的解释
    # 器程序完成操作。
    #!/usr/bin/python :相当于python的绝对路径;
    #!/usr/bin/env python :会去环境设置寻找python目录(事先需要配置好环境变量)
    展开全文
  • #!/usr/bin/python3 和 #!/usr/bin/env python3的区别

    万次阅读 多人点赞 2018-05-15 10:57:05
    脚本语言的第一行,目的就是指出,你想要你的这个文件中的.../usr/bin/env python3这种用法是为了防止操作系统用户没有将python3装在默认的/usr/bin路径里。当系统看到这一行的时候,首先会到env设置里查找python3...

    脚本语言的第一行,目的就是指出,你想要你的这个文件中的代码用什么可执行程序去运行它,就这么简单

    #!/usr/bin/python3是告诉操作系统执行这个脚本的时候,调用/usr/bin下的python3解释器;
    #!/usr/bin/env python3这种用法是为了防止操作系统用户没有将python3装在默认的/usr/bin路径里。当系统看到这一行的时候,首先会到env设置里查找python3的安装路径,再调用对应路径下的解释器程序完成操作。
    #!/usr/bin/python3相当于写死了python3路径;
    #!/usr/bin/env python3会去环境设置寻找python3目录,推荐这种写法


    展开全文
  • 我们经常会在别人的脚本或者项目的入口文件里看到第一行是下面这样#!/usr/bin/python 或者这样#!/usr/bin/envpython 这两者有什么区别呢?稍微接触过 l...
  • 脚本语言的第一行,目的就是指出,你想要你的这个文件中的代码用.../usr/bin/env python这种用法是为了防止操作系统用户没有将python装在默认的/usr/bin路径里。当系统看到这一行的时候,首先会到env设置里查找pyth...
  • 目的是在运行python脚本的时候告诉操作系统我们要用python解释器去运行py脚本。 所以我们在第一句往往会写如下两句中的其中一句: .../usr/bin/env python 就是说在没有在执行程序时指出用什么程序运行py...
  • /usr/bin/env python3 在 Python 脚本的第一行经常见到这样的注释:#!/usr/bin/env python3 或者#!/usr/bin/python3 含义 在脚本中, 第一行以 #! 开头的代码, 在计算机行业中叫做 "shebang", 也叫做 sha-bang ...
  • #!/usr/bin/env python3 的作用

    千次阅读 2020-04-21 14:27:37
    /usr/bin/env python3 或者 #!/usr/bin/python3 含义 在脚本中, 第一行以 #! 开头的代码, 在计算机行业中叫做 “shebang”, 也叫做 sha-bang / hashbang / pound-bang / hash-pling, 其作用是"指定由哪个解释器来...
  • /usr/bin/env python3或者#!/usr/bin/python3字样,其中#!符号在计算机行业中叫做 “Shebang”, 其作用是指定由哪个解释器来执行脚本。在这里即是指定python3作为解释器。 指定解释器 windows系统是根据文件后缀决定...
  • 第二部分是 /usr/bin/python 或者 /usr/bin/env python 关于 #! 这个符号,其实它是有名字的,叫做 Shebang 或者Sha-bang ,有的翻译组将它译作 释伴,即“解释伴随行”的简称,同时又是Shebang的音译。 Shebang通常...
  • /usr/bin/env python3 或者 #!/usr/bin/python3 这是脚本语言共同遵守的规则:当第一行为 #!/path/to/script/interpreter 时,指定了用来执行本脚本的解释器。 注意: 1.必须是文件的第一行 2.必须以#!..
  • /usr/bin/env python #coding:utf-8 以上代码,放在python文件的头部,仅作为声明作用 如果是python3,则改为python3 #!/usr/bin/env python3 # encoding: utf-8 二、#!/usr/bin/python 指定 【/usr/bin/...
  • 脚本代码文件的第一行,写了#!/usr/bin/*****。目的就是指出,你想要你的这个文件中的代码用什么可执行程序去.../usr/bin/env python这种用法是为了防止操作系统用户没有将python装在默认的/usr/bin路径里。当系统看到
  • #!/usr/bin/python 使用which命令是查找命令是否存在,以及命令的存放位置在哪儿。.../usr/bin/env python这种用法是为了防止操作系统用户没有将python装在默认的/usr/bin路径里。当系统看到这一行
  • #!/usr/bin/env python作用

    2018-04-27 17:41:00
    /usr/bin/env python 通常出现在python文件的第一行 ,标明解释器路径,只有在linux才有用。 该行只有./1.py这种方式执行代码才起作用。(而这样执行:python 1.py不起作用。) 假如你的系统中python解释器存放...
  • 脚本语言的第一行,目的就是指出,你想要你的这个文件中的代码用.../usr/bin/env python 这种用法是为了操作系统防止用户没有将python 装在默认的 /usr/bin 路径里。当系统看到这一行的时候,首先会到env设置里查找 py
  • 脚本语言的第一行,目的就是指出,你想要你的这个文件中的代码用什么可.../usr/bin/env python 这种用法是为了操作系统防止用户没有将python 装在默认的 /usr/bin 路径里。当系统看到这一行的时候,首先会到env设置里

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 132,730
精华内容 53,092
关键字:

#!/usr/bin/envpython

python 订阅