实例分析:Linux 系统 CentOS8 shell 中 set, env, export 区别与使用场景
区别:
命令set
,env
,export
均在 bash
中执行。
set
: 改变 shell 属性和定位参数值; 显示本地变量、当前shell 的变量,包括当前用户变量
export
是bash
的内建指令;显示和设置环境变量。
VAR=whatever
是变量定义的bash
语法;
env
显示环境变量,显示当前用户变量;本身是一个程序,当env
被调用/执行时,实际触发以下过程:
- 命令env
作为一个新的进程被执行
- env
修改环境
- 调用被用作参数的命令(command
),env
进程被命令(command
)进程取代
举例:
[arthur@localhost blog]$ env GREP_OPTIONS='-v' grep one test.txt
grep: warning: GREP_OPTIONS is deprecated; please use an alias or script
#this is the test file to analyse the difference between env,set and export
line two
上述命令将启动两个新的进程:(i) env 和 (ii) grep (事实上第二个进程会取代第一个进程)。从grep
进程的角度来看,命令执行的结果等同于