#!/usr/bin/env的问题

原创 2013年12月06日 09:57:29
#!/usr/bin/php          是告诉操作系统执行这个脚本的时候,调用/usr/bin下的php解释器;
#!/usr/bin/env php   这种用法是为了防止操作系统用户没有将php装在默认的/usr/bin路径里。当系统看到这一行的时候,首先会到env设置里查找python的安装路径,再调用对应路径下的解释器程序完成操作。
 最近在写PHP脚本发现有些同事脚本有这么个写法,长见识了,google了一下,弄明白啥意思了分享下:
    Probably the most common use of env is to find the correct interpreter
    for a script, when the interpreter may be in different directories on
    different systems.   The following example will find the `perl' inter-
    preter by searching through the directories specified by PATH.

          #!/usr/bin/env perl

    One limitation of that example is that it assumes the user's value for
    PATH is set to a value which will find the interpreter you want to exe-
    cute.   The -P option can be used to make sure a specific list of directo-
    ries is used in the search for utility.   Note that the -S option is also
    required for this example to work correctly.

          #!/usr/bin/env -S -P/usr/local/bin:/usr/bin perl

    The above finds `perl' only if it is in /usr/local/bin or /usr/bin.   That
    could be combined with the present value of PATH, to provide more flexi-
    bility.   Note that spaces are not required between the -S and -P options:

          #!/usr/bin/env -S-P/usr/local/bin:/usr/bin:${PATH} perl

这种写法主要是为了让你的程序在不同的系统上都能适用。
不管你的perl是在/usr/bin/perl还是/usr/local/bin/perl,#!/usr/bin/env perl会自动的在你的用户PATH变量中所定义的目录中寻找perl来执行的。
还可以加上-P参数来指定一些目录去寻找perl这个程序,#!/usr/bin/env -S -P/usr/local/bin:/usr/bin perl的作用就是在/usr/local/bin和/usr/bin目录下寻找perl。
为了让程序更加的有可扩展性,可以写成#!/usr/bin/env -S-P/usr/local/bin:/usr/bin:${PATH} perl,那么它除了在这两个目录寻找之外,还会在PATH变量中定义的目录中寻找。

同样的php也适用, #!/usr/bin/php写成 #!/usr/bin/env php会好些,当然更好的是#!/usr/bin/env -S-P/usr/local/bin:/usr/bin:${PATH} php

                    
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Windows/Unix文本格式转换导致“/usr/bin/env: No such file or directory”

今天在用同事写的一个python脚本,一运行就出现了以下错误: /usr/bin/env: No such file or directory 用ls命令查看了一下,“/usr/b...

#!/usr/bin/env 脚本解释程序的作用

#!/usr/bin/env 脚本解释程序的作用

#! /usr/bin/env在脚本中的作用

#!/usr/bin/env  在linux的一些bash的脚本,需在开头一行指定脚本的解释程序,如:  #!/usr/bin/env python  再如:  #!/usr/bin/env ...

关于/usr/bin/env

在linux的一些bash的脚本,需在开头一行指定脚本的解释程序,如: #!/usr/bin/env python 再如: #!/usr/bin/env perl #!/usr/bin/env...

使用GitHub + Hexo搭建个人博客(八)- Hexo异常:/usr/bin/env: node: 没有那个文件或目录

昨天升级系统之后,遇到了这个问题,

hexo异常:/usr/bin/env: node: 没有那个文件或目录

一.问题描述发现自己Deepin2014 上用GitHub + Hexo搭建个人博客,但是每次重新启动系统时显示错误 自己明明搭建好了环境啊!npm命令都可以使用啊,但时hexo 版本也查看不到...

Error in '/usr/bin/c++': double free or corruption (top)问题解决

Error in ‘/usr/bin/c++’: double free or corruption (top)问题解决在把笔记本上能够编译的CMake工程放到arm上面去编译时,结果无法编译,然后一...

linux下编译代码遇到“/usr/bin/ld: cannot find -lcrypto”的问题

linux下编译代码遇到“/usr/bin/ld: cannot find -lcrypto”的问题 1. 问题:/usr/bin/ld: cannot find -lcrypto 问题描述:在L...
  • cainv89
  • cainv89
  • 2016年03月01日 18:50
  • 702

删除/usr/bin/vlc后,安装不上vlc问题解决

删除/usr/bin/vlc后,安装不上vlc问题解决 1. 由于修改root权限运行,修改完vlc没法运行,然后删/usr/bin/vlc,再次安装,运行vlc提示如下错误: 程序“vl...

【转载】解决/usr/bin/ld: cannot find -lxxx 问题

问题: 在linux环境编译应用程式或lib的sourcecode时常常会出现如下的错误讯息: /usr/bin/ld: cannot find -lxxx 这些讯息会随...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:#!/usr/bin/env的问题
举报原因:
原因补充:

(最多只允许输入30个字)