您的位置:首页 > 运维架构 > Shell

[svc]彻底明白centos set&env bash&source&exec执行程序本质区别

2017-11-09 22:35 423 查看

从这个图看下env和set的本质区别

env是用户变量,可被子bash(fork的进程)继承

set是bash本地变量,无法被子bash继承

本地变量包含了所有的环境env变量

本bash export name=”maotai”,则在子bash里也会env|grep name,存在, set|grep name也存在

sh 1.sh
,开子bash执行完毕脚本

name="maotai"
$ cat 1.sh
#!/bin/bash
echo $name

# 未输出任何


source 1.sh
,不开启子bash: source不会开子bash

name="maotai"
$ cat 1.sh
echo $name

# 输出maotai


exec,不会开子bash,会把进程生命赋给要执行的命令

exec命令在执行时会把当前的shell process关闭,然后换到后面的命令继续执行

bash shell的命令分为两类:外部命令和内部命令

参考(很经典):http://www.cnblogs.com/zhaoyl/archive/2012/07/07/2580749.html

http://blog.csdn.net/clozxy/article/details/5818465



下面剖析下细节







内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: