source 命令详解
更新时间:2026-08-28。本文是「一个命令一个文档」系列,属于 Shell 内建命令族(见Shell 内建命令)。改了配置文件想立刻生效,就靠它。
source(简写 .)在当前 shell 里执行指定脚本,而不是开一个子 shell 去跑。区别很关键:子 shell 里设的变量、alias,父 shell 是拿不到的;source 跑的,变量直接留在当前 shell。
一、基本用法
bash
source ~/.bashrc # 重新加载配置,使改动立即生效
. ~/.bashrc # 同上,. 是 source 的简写改了
~/.bashrc(比如新加了 alias 或export PATH)后,不想重开终端,就source ~/.bashrc让它立刻生效。注意.和后面路径之间要有空格,. ~/.bashrc不是./~。
二、source vs 直接执行
bash
# 有个 setup.sh 里写了: export TOKEN=xyz
./setup.sh # 子 shell 执行,执行完 TOKEN 没了
source setup.sh # 当前 shell 执行,TOKEN 留下来可用这是最常见的坑:想让脚本里的 export/cd/alias 影响当前终端,必须
source;直接./script会在子 shell 跑,结束后一切归零。加载环境、激活虚拟环境(source venv/bin/activate)都是这个原理。
三、脚本里 source 其他文件
bash
source ./config.sh # 引入公共配置/函数(共享当前 shell 的变量)把通用函数/配置拆到独立文件,主脚本
source进来复用——比./config.sh好,因为能共享变量。注意被 source 的文件不需要可执行权限(它不被"执行",是被"读取")。
相关命令
一句话总结
source(简写 .)= 在当前 shell 执行脚本:变量/alias/export 直接留在当前终端;和 ./script 的关键区别是后者开子 shell、改动不回传——改完 ~/.bashrc 用 source ~/.bashrc 即时生效,激活 venv 用 source venv/bin/activate,引入公共配置也用它。