深入理解shell:source、sh、bash与./执行脚本的差异解析
182 浏览量
更新于2023-05-11
2
收藏 62KB PDF 举报
"这篇文章主要探讨了在Linux shell环境中,source、sh、bash以及./命令执行脚本的不同方式和效果。"
在Linux系统中,我们经常需要执行shell脚本来完成各种任务,而不同的执行方式会产生不同的行为。以下是这四种方法的详细解析:
1. **source命令** 或 **点命令 (.)**:
source命令或点命令是shell中的内置命令,其作用是在当前shell会话中直接读取并执行指定文件(如`.bash_profile`)中的命令。这意味着,任何环境变量的更改、函数的定义等都会立即反映到当前会话中,无需退出并重新登录。当你更新了配置文件(如`.bashrc`)并希望新设置立即生效时,通常会使用source命令。
2. **sh命令** 和 **bash命令**:
这两个命令都是用来执行shell脚本,但它们会在新的子shell进程中运行文件。这意味着,即使脚本改变了环境变量,这些更改也不会影响到父shell,除非将这些变量通过export命令导出到环境变量中。sh是标准的Unix Bourne Shell,而bash是它的扩展,提供了更多的功能和语法糖。sh命令通常用于执行符合POSIX标准的脚本,而bash则更适合编写包含bash特定特性的脚本。使用`-n`选项,sh可以进行语法检查,`-x`选项则可以打印出脚本执行的每一条命令。
3. **./命令**:
使用`.`或`./`前缀执行脚本,会创建一个新的shell子进程来执行文件中的命令。这种方法最常用于可执行文件或具有执行权限的脚本。由于脚本在子shell中运行,因此它对环境的影响仅限于该子shell,不会影响到父shell。这种方式使得脚本可以在独立的环境中执行,不会干扰当前的shell会话。
4. **shell的其他内置命令**:
除了上述执行脚本的方式,shell还提供了一些内置命令,例如`break`和`continue`用于控制循环,`cd`改变当前工作目录,`echo`打印文本,`eval`执行字符串作为命令,`exec`替换当前shell进程,`export`将变量导入环境,`pwd`显示当前目录,`read`读取用户输入,`readonly`使变量不可变,`return`结束函数,`set`控制shell选项,以及`unset`删除变量。
了解这些命令的区别对于编写和调试shell脚本至关重要,特别是在管理环境变量、执行多任务或者确保脚本行为的一致性时。正确选择执行方式能够帮助优化脚本的效率和功能,并避免不必要的错误。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2009-03-23 上传
2021-01-09 上传
2020-09-14 上传
点击了解资源详情
2012-11-04 上传
2021-02-27 上传
weixin_38620267
- 粉丝: 5
- 资源: 907
最新资源
- CoreOS部署神器:configdrive_creator脚本详解
- 探索CCR-Studio.github.io: JavaScript的前沿实践平台
- RapidMatter:Web企业架构设计即服务应用平台
- 电影数据整合:ETL过程与数据库加载实现
- R语言文本分析工作坊资源库详细介绍
- QML小程序实现风车旋转动画教程
- Magento小部件字段验证扩展功能实现
- Flutter入门项目:my_stock应用程序开发指南
- React项目引导:快速构建、测试与部署
- 利用物联网智能技术提升设备安全
- 软件工程师校招笔试题-编程面试大学完整学习计划
- Node.js跨平台JavaScript运行时环境介绍
- 使用护照js和Google Outh的身份验证器教程
- PHP基础教程:掌握PHP编程语言
- Wheel:Vim/Neovim高效缓冲区管理与导航插件
- 在英特尔NUC5i5RYK上安装并优化Kodi运行环境