Linux 之 env 命令

env 显示或修改环境变量

env其实就是environment的缩写,用来查看或者修改当前的环境。

Linux是多用户的平台,为了每个用户都有自己的设置,env使用了比较多的环境变量,比如echo $HOME后不同的用户可以看到不同的路径。

官方定义为:

修改则可以用env命令进行管理。

官方定义为:

env – run a program in a modified environment

语法

语法如下所示:$ env [OPTION]… [-] [NAME=VALUE]… [COMMAND [ARG]…]

常用的参数为:

  • -i 开始一个新的空的环境
  • -u  取消设置的的变量
  • -C 更改工作目录
  • -S 分割输入参数 

默认无参数

默认情况下,输入env会给出当前设置的环境和系统默认的环境。$ envHOSTTYPE=x86_64LANG=en_US.utf8PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:NAME=LOCALHOSTHOME=/home/usernameUSER=usernameLOGNAME=usernameSHELL=/usr/bin/bashSHLVL=1PWD=/home/username/mycode/cOLDPWD=/home/username/mycode/pythonPAGER=lessLESS=-R…

设置环境变量

当然env最重要的还是设置环境变量,一般使用为:$ env NAME=what-you-want-to-set

接下来使用echo $NAME就可以看到效果了。

全新的环境

如果希望运行程序的过程中,不受到原来环境的影响,可以使用-i参数,直接开启一个全新的环境。$ env -i program

取消某些环境变量

通过-u来取消某些设置的环境变量,比如:$ env -u PWDHOSTTYPE=x86_64LANG=en_US.utf8PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:NAME=LOCALHOSTHOME=/home/usernameUSER=usernameLOGNAME=usernameSHELL=/usr/bin/bashSHLVL=1OLDPWD=/home/username/mycode/pythonPAGER=lessLESS=-R…

可以看到与env相比,PWD变量已经不存在了。

更改工作路径

可以通过-C来更改工作的路径。$ pwd/home/username/linux/scripts$ env -C .. pwd/home/username/linux

进阶的传递多个参数

这个参数较多用在脚本中,-S后面可以跟多个参数,如果没有这个参数,则只能跟一个参数,比如以脚本为例:#!/usr/bin/env perl -w -T

会报错/usr/bin/env: ‘perl -w -T’: No such file or directory

此时加上-S就可以解决了,如下:#!/usr/bin/env -S perl -w -T

声明:文中观点不代表本站立场。本文传送门:https://eyangzhen.com/92788.html

(0)
联系我们
联系我们
分享本页
返回顶部