shell命令中用source 和sh(或者bash)执行脚本的区别,以及export的作用

用户登录到Linux系统后,系统将启动一个用户shell,我们暂且称这个shell为shell父。

在这个shell父中,可以使用shell命令或声明变量,也可以创建并运行shell脚本程序。

当使用sh或者bash运行shell脚本程序时,系统将创建一个子shell,我们暂且称为shell子。

此时,系统中将有两个shell,一个是登录时系统启动的shell父,另一个是系统为运行脚本程序创建

的shell子。当一个脚本程序运行完毕,脚本shell子将终止,返回到执行该脚本之前的shell父。

这时脚本中创建的变量或者环境变量(export的变量)是在shell子中创建的,只在shell子中有效,在shell父中是无法访问的

当使用source运行脚本程序时,系统并不会创建子shell,而是将脚本中的命令放到shell父中运行,

这时脚本中创建的变量或者环境变量(export的变量)相当于是在shell父中创建的,在shell父中是可以访问的。

因此使用source执行修改后的配置文件会直接生效,不需要重启

export 的作用是为当前shell设置环境变量,这样变量在其子shell也可以访问,当然,在其父shell中还是无法访问的

普通的变量只在当前shell中可以访问,在父shell或者子shell中都无法访问

export 也是 bash 的一个内置命令。它主要是用来将父 shell 里的变量导出供子 shell 使用。

它有如下特征:

1. 用 export 导出的变量放在“导出变量列表”中,它可以被子 shell (子 shell 的子 shell 也是如此)拷贝并使用。

2. 被 export 出来的变量虽然可以被子 shell 使用,但它也只是一个拷贝,而不会影响到父 shell 中的值以及其它子 shell 中的值。

原文地址:https://www.cnblogs.com/gaoBlog/p/10095619.html

时间: 2024-11-06 07:15:02

shell命令中用source 和sh(或者bash)执行脚本的区别,以及export的作用的相关文章

linux里source、sh、bash、./有什么区别(转)

add by zhj: 主要不同是,source是在当前shell中执行脚本,而sh, bash, ./是在当前shell的child shell中执行脚本 原文:http://www.cnblogs.com/pcat/p/5467188.html 在linux里,source.sh.bash../都可以执行shell script文件,那它们有什么不同吗? ----------- 1.source source a.sh 在当前shell内去读取.执行a.sh,而a.sh不需要有"执行权限&q

linux里source、sh、bash、./有什么区别

https://www.cnblogs.com/pcat/p/5467188.html source  .  这两个是一样的 .在当前shell运行脚本.脚本不需要 执行权限. sh 在子shell运行脚本.脚本不需要 执行权限. ./ 在子shell运行脚本,脚本需要 执行权限(x) 原文地址:https://www.cnblogs.com/654321cc/p/9333395.html

./yy.sh -d bash 执行脚本时所加的参数

-e filename 如果 filename存在,则为真 -d filename 如果 filename为目录,则为真 -f filename 如果 filename为常规文件,则为真 -L filename 如果 filename为符号链接,则为真 -r filename 如果 filename可读,则为真 -w filename 如果 filename可写,则为真 -x filename 如果 filename可执行,则为真 -s filename 如果文件长度不为0,则为真 -h fil

详解shell中source、sh、bash、./执行脚本的区别

复制文章:https://www.jb51.net/article/128918.htm 这篇文章主要介绍了shell中source.sh.bash../执行脚本的区别,需要的朋友可以参考下 1.source命令用法: source FileName 作用:在当前bash环境下读取并执行FileName中的命令.该filename文件可以无"执行权限" 注:该命令通常用命令“.”来替代. 如:source .bash_profile . .bash_profile两者等效. sourc

source、sh、bash、./执行脚本的区别

source.sh.bash../执行脚本的区别 source命令用法: source FileName 作用:在当前bash环境下读取并执行FileName中的命令.该filename文件可以无"执行权限" 注:该命令通常用命令"."来替代. 如:source .bash_profile . .bash_profile两者等效. source(或点)命令通常用于重新执行刚修改的初始化文档. source命令(从 C Shell 而来)是bash shell的内置命

[Z] shell中的点命令与source命令

1 shell脚本执行方法 有两种方法执行shell scripts,一种是新产生一个shell,然后执行相应的shell scripts:一种是在当前shell下执行,不再启用其他shell. 新产生一个shell然后再执行scripts的方法是在scripts文件开头加入语句:#!/bin/sh.一般的script文件(.sh)即是这种用法.这种方法先启用新的sub-shell(新的子进程),然后在其下执行命令. 另外一种方法就是上面说过的source命令,不再产生新的shell,而在当前s

shell中的点命令与source命令的区别

1 shell脚本执行方法 有两种方法执行shell scripts,一种是新产生一个shell,然后执行相应的shell scripts:一种是在当前shell下执行,不再启用其他shell. 新产生一个shell然后再执行scripts的方法是在scripts文件开头加入语句:#!/bin/sh.一般的script文件(.sh)即是这种用法.这种方法先启用新的sub-shell(新的子进程),然后在其下执行命令. 另外一种方法就是上面说过的source命令,不再产生新的shell,而在当前s

什么是shell,shell基础由浅入深,常用的shell命令、用法、技巧

Shell:可以批量处理.自动化完成一系列维护任务,大大减轻管理员的负担!Shell是一个特殊的应用程序,介于操作系统内核与用户之间,充当了一个"命令解释器"的角色.负责接收用户输入的操作指令,并进行解释,将需要执行的操作传递给内核执行,并输出执行结果. 如何查看系统所支持的Shell(默认为Bash): Shell脚本格式:由脚本声明.脚本注释.可执行语句构成:   Shell脚本执行方式:只要将平时使用的各种Linux命令按顺序保存到一个文本文件,然后添加可执行权限,这个文件就成为

让你提前认识软件开发(23):如何在C语言中执行shell命令?

第1部分 重新认识C语言 如何在C语言中执行shell命令? [文章摘要] Linux操作系统具备开源等诸多优秀特性,因此在许多通信类软件(主流开发语言为C语言)中,开发平台都迁移到了Linux上,同时shell操作在Linux的编程中占有很重要的地位,这就需要开发人员熟练掌握在C语言中执行shell命令的相关操作. 本文用实际的代码演示了如何在C语言程序中执行shell命令,为相关软件开发工作的开展提供了参考. [关键词] Linux  C语言  shell  命令  开发 一.程序执行流程