env命令详解
env命令时gnu的coreutils包内的一个软件,它的功能是:在一个修改后的环境里执行命令。
通俗的讲:一个linux软件可能被安装在好几个地方,举个例子:在最新的centos中perl的版本为5.16,而我在home目录下安装了最新的5.26.1版本,这样在同一个系统内,有2个perl的执行程序:
[root@noi ~]# man env
[root@noi ~]# which -a perl
/root/perl5/perlbrew/perls/perl-5.26./bin/perl
/usr/bin/perl
到底执行哪一个,取决于PATH环境变量内路径的排列顺序
[root@noi ~]# echo $PATH
/root/perl5/perlbrew/bin:/root/perl5/perlbrew/perls/perl-5.26./bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
在被环境中,显然执行的是home目录下的5.26版本。但是这个时候,我想执行一个程序在5.16版本下,我可以使用:
[root@noi ~]# /usr/bin/perl --version This is perl , version , subversion (v5.16.3) built for x86_64-linux-thread-multi
(with registered patches, see perl -V for more detail)
同时,我也可以利用env命令,来达到相同的目的:
[root@noi ~]# env PATH=/usr/bin perl --version This is perl , version , subversion (v5.16.3) built for x86_64-linux-thread-multi
(with registered patches, see perl -V for more detail)
注意:这里PATH变量被我修改为 /usr/bin ,这就是man手册说的,env可以在一个修改了的环境下,执行命令的含义。看下面,没有修改PATH时,执行的情况:
[root@noi ~]# env perl --version This is perl , version , subversion (v5.26.1) built for x86_64-linux
(with registered patch, see perl -V for more detail)
看到没,执行的是home目录版本,也就是依据上面PATH原值,来执行的。
依据这个特性,有时候我们在写脚本,比如perl脚本的时候,如果想运行当前perl环境下的脚本,而不是固定目录的 /usr/bin/perl ,可以用下面的写法替代 /usr/bin/perl
#!/usr/bin/env perl
这样写,其实就是把perl放到当前环境下,来执行perl了。
env命令详解的更多相关文章
- Linux env命令详解
env:查询环境变量 常用的命令展示 查看当前环境的环境变量 [root@localhost ~]# env HOSTNAME=localhost.localdomain SELINUX_ROLE_R ...
- sed命令详解 vim高级技巧 shell编程上
第1章 sed命令详解 1.1 查找固定的某一行 1.1.1 awk命令方法 [root@znix ~]# awk '!/oldboy/' person.txt 102,zhangyao,CTO 10 ...
- Linux grep/egrep命令详解
grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来 grep搜索成功,则返回0,如果搜索不成功,则返回1,如果搜索的文件不存在,则返回2. grep的规则表达式( ...
- 【docker-compose】docker-compose.yml文本内容详解 + docker-compose命令详解 + docker-compose启动服务容器时区设置
参考地址:https://blog.csdn.net/Kiloveyousmile/article/details/79830810 参考地址:https://docs.docker.com/comp ...
- [SHELL]:let 命令详解
[SHELL]:let 命令详解 摘自:https://blog.csdn.net/happygongzhuo/article/details/6819099 let :简单的计算器 语 法let[ ...
- Dockerfile命令详解
使用docker就会避免不了的要做各种镜像,就会用到dockerfile,记录一下dockerfile的主要命令 1.主要组成部分 dockerfile执行build命令时,是从上倒下依次执行 ...
- [转帖]Docker学习之Dockerfile命令详解
Docker学习之Dockerfile命令详解 https://it.baiked.com/system/docker/2436.html 图挺好的 前言 之前,制作镜像的伪姿势搭建已经见过了,今天介 ...
- Dockerfile 命令详解及最佳实践
Dockerfile 命令详解 FROM 指定基础镜像(必选) 所谓定制镜像,那一定是以一个镜像为基础,在其上进行定制.就像我们之前运行了一个 nginx 镜像的容器,再进行修改一样,基础镜像是必须指 ...
- Git初探--笔记整理和Git命令详解
几个重要的概念 首先先明确几个概念: WorkPlace : 工作区 Index: 暂存区 Repository: 本地仓库/版本库 Remote: 远程仓库 当在Remote(如Github)上面c ...
随机推荐
- JavaScript高级程序设计(第3版)学习笔记·第8章——浏览器对象模型BOM
转自:http://www.shaoqun.com/a/43768.aspx 访问和操作浏览器窗口的模型称为浏览器对象模型BOM(Browser Object Model),但习惯上是把所有针对浏览器 ...
- 小米电视支付SDK接入air坑爹之路
1. air的包名在生成android后会加入一个air的前缀变为air.***.***.mibox.包名与appid和appkey必须相相应才行,不然会一直返回40000错误 2. 加入了Nativ ...
- 能说明你的Javascript技术很烂的五个原因
Javascript在互联网上名声很臭,但你又很难再找到一个像它这样如此动态.如此被广泛使用.如此根植于我们的生活中的另外一种语言.它的低学习门槛让很多人都称它为学前脚本语言,它另外一个让人嘲笑的东西 ...
- JavaScript二(第一个js程序)
一.<script>xxxx</script>标签解析 1.charset :可选,表示通过src属性指定的字符集,由于大多数浏览器忽略它,所以很少有人用它2.defer:可选 ...
- Scalatra文件下载时中文乱码
可以采用Servlet平台的解决方法进行解决: Ok(file.get, Map( "Content-Type" -> (file.contentType.getOrElse ...
- ElasticSearch异常归纳(能力工场小马哥)
异常1: can not run elasticsearch as root [WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [node-2] ...
- 新浪微博api出现认证失败问题 (获取code字段值的问题)
出现该提示的原因:`` - 说: (2015-10-30 18:06:14)回调地址不一致,`` - 说: (2015-10-30 18:07:38)请在编辑开发者信息中将网站地址和应用信息--高级信 ...
- android-使用环信SDK开发即时通信功能及源代码下载
近期项目中集成即时聊天功能.挑来拣去,终于选择环信SDK来进行开发,选择环信的主要原因是接口方便.简洁.说明文档清楚易懂.文档有android.ios.和后台server端.还是非常全的. 环信官网: ...
- 转载【TP3.2】:使用PHP生成二维码
转载:在网上down了一个二维码插件PHPQRcode,整合到了ThinkPHP 3.2.3,然后写了个外部自定义函数直接调用生成二维码,根据参数不同有不同尺寸效果,整合其实挺简单,分享给大家! 今天 ...
- 深入PHP内核之参数
1.看一下一个扩展中的简单代码 ZEND_BEGIN_ARG_INFO(params_add_arginfo, 0) ZEND_ARG_INFO(0, a) ZEND_ARG_INFO(0, b) Z ...