.source与./scriptname.sh
时间: 2024-09-14 12:05:54 浏览: 40
在Linux环境下,`.source` 和 `./scriptname.sh` 是两种不同的运行shell脚本的方式:
1. ** sourcing (`.source`) **[^2]:
- 这种方式用于逐行读取并执行脚本中的内容,而不是创建一个新的进程。它主要用于在当前Shell会话中加载环境变量或函数定义,常用于shell脚本的交互式执行。
- 示例:
```shell
# 使用source加载hello_world.sh
source Linux/shell/codes/hello_world.sh
```
- 源码的优点是可以立即看到修改后的环境变量或函数效果,不需要额外权限。
2. **直接运行 (`./scriptname.sh`) **[^1]:
- 这是通过操作系统来执行一个.sh文件,通常创建一个新的子shell进程来运行脚本内容。
- 如果脚本声明了#!/bin/bash或其他shell解释器,并且具有执行权限(`x`),用户可以使用这种方式运行。
- 示例:
```shell
# 作为根用户或文件所有者,直接运行脚本
sudo ./Linux/shell/codes/hello_world.sh 或者 ./a.run
```
两者的主要区别在于作用域和执行方式:
- `.source` 只影响当前Shell会话,而`./scriptname.sh` 创建新进程独立运行。
- 如果脚本需要持久更改环境或需要交互,`.source` 更合适;如果是为了完成特定任务,如自动化操作,则可以直接运行。
阅读全文