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

本文详细介绍了Linux系统中的env命令,包括其基本用法、选项参数、示例展示,如查看环境变量、删除变量、定义变量以及在不同环境执行命令。特别关注了如何通过env调整PATH环境变量来选择不同版本的Perl执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、命令介绍

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

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

二、选项参数

选项说明
-i开始一个新的空的环境
-u从当前环境中删除指定的变量

三、命令示例

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

[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 --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)

但是这个时候,我想执行一个程序在 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 时,执行的情况:

[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)

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

#!/usr/bin/env perl

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

Linux系统环境变量是在Linux操作系统定义的一种变量,用于存储系统的配置信息和运行环境。在Linux下,可以通过定义环境变量来设置系统的路径、命令别名、语言设置等。环境变量分为永久变量和临性变量两种。永久变量是通过修改配置文件来设置,一旦配置成功,变量会永久生效;临性变量是使用命令如export等命令设置,设置之后会立即生效,但在关闭shell会失效。根据影响范围的不同,环境变量又分为用户变量和系统变量。用户变量只对某个用户的路径或执行起作用,而系统变量则影响整个系统。可以使用命令env来查看当前系统环境变量。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *2* [【Linux环境变量](https://blog.csdn.net/weixin_60478154/article/details/127856166)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Linux环境变量](https://blog.csdn.net/xxxx123041/article/details/125368462)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值