侧边栏壁纸
Linux入门自学网博主等级

每日学一条Linux命令,终成Linux大神

  • 累计撰写 725 篇文章
  • 累计创建 143 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Linux env命令教程:如何查看、修改和清空环境变量(附案例详解和注意事项)

Linux env命令介绍

env命令是environment的缩写,它可以用来显示或设置当前shell的环境变量。环境变量是一些存储在系统中的键值对,可以影响程序的运行。例如,PATH变量存储了系统搜索可执行文件的目录,LANG变量存储了系统的语言设置,等等。env命令可以用来查看所有的环境变量,也可以用来临时改变环境变量,或者在一个空白的环境中运行一个程序。env命令还可以用来启动正确的解释器,例如在shell脚本的第一行写#!/usr/bin/env bash,就可以让系统自动找到bash的位置,而不需要指定绝对路径。

Linux env命令适用的Linux版本

env命令是一个标准的Unix命令,它适用于所有的Linux发行版,包括Ubuntu, Debian, CentOS, Fedora, RedHat, Arch, Gentoo, etc. 一般来说,env命令已经预装在系统中,不需要额外安装。如果你的系统中没有env命令,你可以使用包管理器来安装它。例如,
在Ubuntu或Debian中,你可以使用sudo apt install coreutils来安装env命令,它是coreutils包的一部分。
在CentOS或Fedora中,你可以使用sudo yum install coreutilssudo dnf install coreutils来安装env命令。
在Arch中,你可以使用sudo pacman -S coreutils来安装env命令。
在Gentoo中,你可以使用sudo emerge sys-apps/coreutils来安装env命令。

Linux env命令的基本语法

env命令的基本语法如下:

env [选项]... [-] [变量=值]... [命令 [参数]...]

其中,选项可以用来控制env命令的行为,变量=值可以用来设置或修改环境变量,命令和参数可以用来指定要在修改后的环境中运行的程序。如果没有指定命令和参数,env命令会打印出当前的环境变量。

Linux env命令的常用选项或参数说明

env命令有以下常用的选项或参数:

选项说明
-i, --ignore-environment忽略当前的环境变量,只使用指定的变量=值
-u, --unset=变量删除指定的环境变量
-0, --null用空字符而不是换行符来分隔输出的环境变量
--help显示帮助信息并退出
--version显示版本信息并退出

Linux env命令的实例

下面是一些使用env命令的实例,你可以根据你的需要进行修改或添加。

实例1:查看所有的环境变量

如果不带任何参数,env命令会打印出当前的所有环境变量,每个变量占一行,格式为变量=值。例如:

[linux@bashcommandnotfound.cn ~]$ env
USER=linux
HOME=/home/linux
PATH=/usr/local/bin:/usr/bin:/bin
LANG=en_US.UTF-8
SHELL=/bin/bash
...

实例2:设置或修改环境变量

如果指定了变量=值的参数,env命令会设置或修改相应的环境变量,然后运行指定的命令。如果没有指定命令,env命令会打印出修改后的环境变量。例如,我们可以用env命令来修改PATH变量,让系统优先搜索/home/linux/bin目录下的可执行文件:

[linux@bashcommandnotfound.cn ~]$ env PATH=/home/linux/bin:$PATH

或者,我们可以用env命令来修改LANG变量,让系统使用中文显示信息:

[linux@bashcommandnotfound.cn ~]$ env LANG=zh_CN.UTF-8

实例3:在空白的环境中运行命令

如果使用了-i或--ignore-environment选项,env命令会忽略当前的环境变量,只使用指定的变量=值,然后运行指定的命令。如果没有指定变量=值和命令,env命令会打印出一个空白的环境。这样可以避免一些环境变量对程序的影响。例如,我们可以用env命令来在一个空白的环境中运行python:

[linux@bashcommandnotfound.cn ~]$ env -i python
Python 3.9.1 (default, Dec  8 2020, 07:51:42) 
[GCC 10.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

实例4:删除环境变量

如果使用了-u或--unset=变量选项,env命令会删除指定的环境变量,然后运行指定的命令。如果没有指定命令,env命令会打印出删除后的环境变量。这样可以避免一些不需要的环境变量对程序的影响。例如,我们可以用env命令来删除LANG变量,让系统使用默认的语言设置:

[linux@bashcommandnotfound.cn ~]$ env -u LANG

实例5:用空字符分隔输出的环境变量

如果使用了-0或--null选项,env命令会用空字符而不是换行符来分隔输出的环境变量。这样可以方便一些程序处理输出的结果。例如,我们可以用env命令和xargs命令来打印出所有的环境变量的名称:

[linux@bashcommandnotfound.cn ~]$ env -0 | xargs -0 -n1 echo | cut -d= -f1
USER
HOME
PATH
LANG
SHELL
...

实例6:启动正确的解释器

env命令还可以用来启动正确的解释器,例如在shell脚本的第一行写#!/usr/bin/env bash,就可以让系统自动找到bash的位置,而不需要指定绝对路径。这样可以提高脚本的可移植性,因为不同的系统可能安装bash的位置不同。例如,我们可以写一个简单的shell脚本,用env命令来启动bash:

#!/usr/bin/env bash
echo "Hello, world!"

然后,我们可以给这个脚本执行权限,并运行它:

[linux@bashcommandnotfound.cn ~]$ chmod +x hello.sh
[linux@bashcommandnotfound.cn ~]$ ./hello.sh
Hello, world!

Linux env命令的注意事项

  • env命令只能临时改变环境变量,如果想要永久改变环境变量,需要修改相关的配置文件,例如~/.bashrc或~/.profile等。
  • env命令不会改变当前shell的环境变量,只会影响子进程的环境变量。如果想要改变当前shell的环境变量,可以使用export命令或source命令。
  • env命令不会检查变量=值的格式是否正确,如果指定了错误的格式,可能会导致一些程序运行异常。例如,如果指定了env PATH=abc,那么系统就无法找到任何可执行文件,除非abc目录下有相应的文件。
  • 如果你的系统中没有env命令,你可能会看到bash: env: command not found的错误提示,这时你需要安装env命令,或者使用其他的方法来查看或修改环境变量。

Linux env命令的相关命令

以下是一些和env命令相关的命令,你可以点击链接查看更多的介绍和用法:

0

评论区