插件窝 干货文章 linux中source命令怎么用

linux中source命令怎么用

脚本 变量 函数 source 376    来源:    2025-04-09

在Linux中,source命令(或.命令)用于在当前Shell环境中执行脚本文件,而不是在子Shell中运行。这意味着脚本中定义的变量、函数等会直接影响当前Shell会话。以下是详细用法和示例:


1. 基本语法

source 文件名 [参数]
# 或等效的简写形式
. 文件名 [参数]
  • 文件名:要执行的脚本路径(需有可读权限)。
  • 参数:传递给脚本的参数(在脚本内通过$1, $2等访问)。

2. 常见用途

(1)加载环境变量

修改~/.bashrc或自定义配置文件后,无需重启终端,直接生效:

source ~/.bashrc
# 或
. ~/.bashrc

(2)导入函数或别名

假设脚本my_functions.sh定义了函数:

source my_functions.sh
# 之后可直接调用脚本中的函数

(3)传递参数

source script.sh arg1 arg2

script.sh中通过$1, $2获取参数。


3. 与./script.shbash script.sh的区别

命令 执行环境 影响范围
source script.sh 当前Shell 变量/函数保留在当前会话
./script.sh 子Shell 退出后变量失效
bash script.sh 子Shell 同上

4. 示例

示例脚本:config.env

# 定义变量
export DB_HOST="localhost"
DB_PORT=3306

# 定义函数
start_server() {
    echo "Starting server on $DB_HOST:$DB_PORT..."
}

操作步骤

# 加载脚本
source config.env

# 使用变量
echo $DB_HOST      # 输出: localhost

# 调用函数
start_server       # 输出: Starting server on localhost:3306...

5. 注意事项

  • 文件路径:如果脚本不在当前目录,需使用绝对路径或相对路径。
  • 权限问题:脚本文件需有读权限(无需执行权限)。
  • 错误处理:如果脚本中有错误,会立即终止执行并影响当前Shell环境。

6. 典型应用场景

  • 开发环境配置:快速加载项目环境变量。
  • 模块化脚本:将常用函数拆分到独立文件,通过source复用。
  • 避免子Shell限制:需要脚本修改当前Shell状态时(如cd、变量导出)。

通过灵活使用source,可以高效管理Shell环境配置和脚本模块化。