env命令详解
命令 详解 ENV
2023-09-27 14:28:09 时间
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.1/bin/perl /usr/bin/perl
到底执行哪一个,取决于PATH环境变量内路径的排列顺序
[root@noi ~]# echo $PATH /root/perl5/perlbrew/bin:/root/perl5/perlbrew/perls/perl-5.26.1/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 5, version 16, subversion 3 (v5.16.3) built for x86_64-linux-thread-multi (with 33 registered patches, see perl -V for more detail)
同时,我也可以利用env命令,来达到相同的目的:
[root@noi ~]# env PATH=/usr/bin perl --version This is perl 5, version 16, subversion 3 (v5.16.3) built for x86_64-linux-thread-multi (with 33 registered patches, see perl -V for more detail)
注意:这里PATH变量被我修改为 /usr/bin ,这就是man手册说的,env可以在一个修改了的环境下,执行命令的含义。看下面,没有修改PATH时,执行的情况:
[root@noi ~]# env perl --version This is perl 5, version 26, subversion 1 (v5.26.1) built for x86_64-linux (with 1 registered patch, see perl -V for more detail)
看到没,执行的是home目录版本,也就是依据上面PATH原值,来执行的。
依据这个特性,有时候我们在写脚本,比如perl脚本的时候,如果想运行当前perl环境下的脚本,而不是固定目录的 /usr/bin/perl ,可以用下面的写法替代 /usr/bin/perl
#!/usr/bin/env perl
这样写,其实就是把perl放到当前环境下,来执行perl了。
相关文章
- DOS 批处理命令For循环命令详解
- ls命令
- lsof命令详解
- linux环境中,top命令中,对command的命令进行扩展查看详情?
- (二)Linux下的crontab定时执行任务命令详解
- 当用命令导入csv文件时提示错误[Err] 1290 - The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
- SVN 命令使用-***
- linux 下使用 sar -n 命令查看Kbps、bps的带宽速率
- Docker(三):Dockerfile 命令详解
- 使用MySQL中的EXPLAIN解释命令来检查SQL
- 大数据入门第十四天——Hbase详解(二)基本概念与命令、javaAPI
- 【Docker】命令 diff
- Bash基础——命令替换
- ***Linux下使用git命令及github项目
- vi/vim 命令使用详解
- QEMU简单知识 以及磁盘格式转换的简单命令
- docker下centos安装ping命令
- Linux下chkconfig命令详解即添加服务以及两种方式启动关闭系统服务
- Linux curl命令详解
- Docker(5)- docker version 命令详解
- Cypress系列(85)- Cypress.platform 命令详解
- Cypress系列(88)- Cypress.spec 命令详解
- Cypress系列(96)- exec() 命令详解
- ls命令详解
- Linux的curl命令使用
- SC 命令
- linux nload命令简介及安装方法
- Linux下chkconfig命令详解
- [转]sed命令详解
- mysql命令:set sql_log_bin=on/off
- linux之find命令详解
- Linux-kill命令和killall命令(11)
- 常用git命令一览
- linux route命令的使用详解