换一种环境 的 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
会给出当前设置的环境和系统默认的环境。
$ env
HOSTTYPE=x86_64
LANG=en_US.utf8
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:
NAME=LOCALHOST
HOME=/home/username
USER=username
LOGNAME=username
SHELL=/usr/bin/bash
SHLVL=1
PWD=/home/username/mycode/c
OLDPWD=/home/username/mycode/python
PAGER=less
LESS=-R
...
设置环境变量
当然env
最重要的还是设置环境变量,一般使用为:
$ env NAME=what-you-want-to-set
接下来使用echo $NAME就可以看到效果了。
全新的环境
如果希望运行程序的过程中,不受到原来环境的影响,可以使用-i
参数,直接开启一个全新的环境。
$ env -i program
取消某些环境变量
通过-u
来取消某些设置的环境变量,比如:
$ env -u PWD
HOSTTYPE=x86_64
LANG=en_US.utf8
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:
NAME=LOCALHOST
HOME=/home/username
USER=username
LOGNAME=username
SHELL=/usr/bin/bash
SHLVL=1
OLDPWD=/home/username/mycode/python
PAGER=less
LESS=-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
更多信息
Hi,XDJM们,更多信息欢迎移步我的主页、CSDN或微信公众号letsProgramming.
- 🐱 github
- 🏠 Homepage https://shaoguangleo.github.io
- CSDN CSDN http://blog.csdn.net/shaoguangleo
- 微信公众号:letsProgramming