爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 6309|回复: 4

模式基础(3):使用/usr/bin/env的好处

[复制链接]

新浪微博达人勋

发表于 2015-2-1 10:39:30 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
本帖最后由 haobang008 于 2015-2-1 10:42 编辑



系统变量的设置 etc/profile 是管理用户的权限,而 ~/.bashrc是使用者的权限
默认的情况下 .bashrc是bash的环境,  .cshrc是csh的环境

在linux的一些脚本里,需在开头一行指定脚本的解释程序,如:

#!/usr/bin/env python

再如:
#!/usr/bin/env perl
#!/usr/bin/env zimbu

但有时候也用
#!/usr/bin/python

#!/usr/bin/perl

那么 env到底有什么用?何时用这个呢?
脚本用env启动的原因,是因为脚本解释器在linux中可能被安装于不同的目录,env可以在系统的PATH目录中查找。同时,env还规定一些系统环境变量。

执行一下 env 命令后看看打印的内容

可以用env来执行程序:

[mark@localhost ~]$ env python
Python 2.6.6 (r266:84292, Dec  7 2011, 20:38:36)
[GCC 4.4.6 20110731 (Red Hat 4.4.6-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>

而如果直接将解释器路径写死在脚本里,可能在某些系统就会存在找不到解释器的兼容性问题。有时候我们执行一些脚本时就碰到这种情况。

更清楚的表述:
这种写法主要是为了让你的程序在不同的系统上都能适用。
不管你的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变量中定义的目录中寻找。



源地址:http://blog.chinaunix.net/uid-26495963-id-3409921.html
另外一种解释:http://www.perlmonks.org/?node_id=716740


密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-2-1 11:51:34 | 显示全部楼层
楼主好人,加油啊~!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-2-1 15:07:27 | 显示全部楼层
学习了!!
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2015-2-1 16:42:37 | 显示全部楼层
这个真的不知道。。。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-2-7 22:20:51 | 显示全部楼层
看上去很不错呢
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表