shell
source 或.script.sh
常用于:
加载环境变量配置
加载函数库
让脚本内容"立即生效"
如果使用bash myenv.sh ,变量智慧存在于子shell,主shell无法访问
1.脚本的4中执行方式
bash script.sh 是否创建新进程 不依赖shebang 不共享变量
sh script.sh 新进程 不依赖shebang 不共享变量
./script.sh 新进程 依赖shebang 不共享变量
source script.sh / .script.sh 不在当前shell 不依赖shebang 完全共享变量
shebang是脚本第一行的声明,用于指定脚本应由哪个解释器执行#!/bin/bash
作用:
使脚本在./script.sh 方式下直到改用哪个解释器执行
明确指定Shell类型(如bash sh zsh python)
保证兼容性与可移植性
#!/bin/bash 明确使用bash
#!/bin/sh 使用系统默认的POSIX Shell
#!/usr/bin/env bash 动态查找系统中bash 的位置
#!/usr/bin/python3 适用于Python脚本
总结:
子shell 独立进程,变量不共享
source 在当前shell执行,变量共享
shebang 指定解释器,兼容性关键
bash vs source 运行机制、变量传递完全不同
建议使用 #!/usr/bin/env bash 更通用