source 命令生成器
在当前shell中执行脚本(source文件 [参数])
开始使用源代码
## 什么是源文件?
`source`命令(也可记为`.`)会在**当前 shell**中读取并执行脚本,而非在子 shell 中执行。这意味着脚本中定义的任何变量、函数或别名在脚本执行完毕后依然有效。这是重新加载 shell 配置及环境设置文件的标准方法。
## 使用方法
1. **指定文件路径**:输入脚本的路径(例如`~/.bashrc`、`./setup.sh`)。 2. **添加参数**(可选):传递脚本所需的参数(例如`arg1 arg2`)。 3. **复制并运行**:将生成的命令粘贴到终端中,更改会立即在当前 shell 中生效。
常用选项
### 位置参数文件
`source` 的第一个参数即为脚本路径:`source ~/.bashrc`。
### 其他位置参数
脚本中剩余的所有参数将依次成为`$1`、`$2`……;`source ./setup.sh dev` 可让`$1=dev`在`setup.sh`内部被使用。
### `.` 的别名
在 POSIX shell 中,`.`与该命令功能相同;`. ~/.bashrc`与`source ~/.bashrc`也具有相同作用。为提升可读性,可在 Bash/Zsh 中使用`source`;为保证跨平台兼容性,则可使用`.`。
▶直接运行脚本与从源代码运行脚本有什么区别?
运行 \`./script.sh\` 会将其在独立的子壳中执行,因此当该命令退出后,所导出的变量和函数就会消失。而 \`source script.sh\` 则在当前壳中执行,所以其产生的变化(变量、别名、\`cd\`)在命令执行完毕后依然存在。
▶为什么 \`source .env\` 不会自动将我的变量加载到环境中?
如果您的 \`.env\` 文件使用了 \`KEY=value\` 而未使用 \`export\`,那么这些变量虽在 shell 中已设置,但不会被导出到子进程。您可以给每行前加上 \`export\`,或者运行 \`set -a; source .env; set +a\` 以自动导出所有变量赋值。
▶编辑了 ~/.bashrc 后,如何重新加载 shell 配置?
运行 \`source ~/.bashrc\`(或 \`. ~/.bashrc\`)。这会在当前终端中重新读取该文件,从而使新的别名、函数和导出设置立即生效,无需打开新的终端。
如果这个工具对你有帮助的话,请考虑请我喝杯咖啡。
请给我买杯咖啡吧。