1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Linux 命令之 env -- 显示系统的环境变量 定义执行命令时的环境变量

Linux 命令之 env -- 显示系统的环境变量 定义执行命令时的环境变量

时间:2023-01-13 17:37:50

相关推荐

Linux 命令之 env -- 显示系统的环境变量 定义执行命令时的环境变量

文章目录

一、命令介绍二、选项参数三、命令示例(一)显示系统的环境变量(二)从当前环境中删除指定的变量(三)定义指定的环境变量(四)在一个修改后的环境下执行命令

一、命令介绍

env命令用于显示系统中已存在的环境变量,以及在定义的环境中执行指令。该命令只使用”-“作为参数选项时,隐藏了选项”-i”的功能。若没有设置任何选项和参数时,则直接显示当前的环境变量。

如果使用env命令在新环境中执行指令时,会因为没有定义环境变量”PATH”而提示错误信息”such file or directory”。此时,用户可以重新定义一个新的”PATH”或者使用绝对路径。

二、选项参数

三、命令示例

(一)显示系统的环境变量

[root@linuxcool ~]# env

(二)从当前环境中删除指定的变量

[root@linuxcool ~]# env -u LOGNAME

(三)定义指定的环境变量

[root@linuxcool ~]# env LOGNAME=root

(四)在一个修改后的环境下执行命令

在最新的 CentOS 中 perl 的版本为5.16,而我在 home 目录下安装了最新的 5.26.1 版本,这样在同一个系统内,有 2 个 perl 的执行程序:

[root@noi ~]# which -a perl/root/perl5/perlbrew/perls/perl-5.26.1/bin/perl/usr/bin/perl

注:which查询命令文件的所在位置;-a表示输出全部匹配到的命令文件的位置

到底执行哪一个,取决于环境变量 PATH 所存储的路径的排列顺序,我们看下 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

路径/root/perl5/perlbrew/perls/perl-5.26.1/bin/perl排在路径/usr/bin的前面,所以执行的是版本号为5.26.1perl

[root@noi ~]# perl --versionThis 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)

但是这个时候,我想执行一个程序在5.16版本下,我可以使用:

[root@noi ~]# /usr/bin/perl --versionThis 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 --versionThis 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 时,执行的情况:

[root@noi ~]# env perl --versionThis 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)

依据这个特性,有时候我们在写脚本,比如写perl脚本的时候,如果想运行当前环境下的perl脚本,而不是写固定目录的/usr/bin/perl,可以用下面的写法替代/usr/bin/perl

#!/usr/bin/env perl

这样写,其实就是把perl放到当前环境下来执行perl了,就是运行/usr/bin下的perl

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。