本文主要介绍 export、exec、source 和 . 的用法。
1. Linux 登录时的 Shell
登录 Linux 系统时运行的 Shell 是一个进程。在该进程中执行其他 Shell 脚本时,会启动新的进程。
新进程中 Shell 的变量无法由父进程(当前 Shell)直接读取。这时可以使用 export 或 source。
source 会在当前进程中执行脚本,而不会新建进程。
一般来说,修改环境变量之后,例如修改 ~/.bashrc,需要执行 source ~/.bashrc,让其中的环境变量生效。
在 ~/.bashrc 中添加环境变量,可以使用 export VAR=value。
实际上,source 命令也可以用点号 . 代替。
2. exec 命令
那么 exec 又是什么?exec 是另一条命令。
exec 执行完成之后,会退出当前 Shell。
使用 sh 或 bash 执行脚本时,会启动一个新的执行环境并在其中运行。
使用 source 或 . 时,则不会新建执行环境,而是在当前环境中从上到下执行代码。
在网上搜索 Linux Shell exec 时,很容易找到 exec 函数族的资料。区别在于,exec 函数族指的是可以在 C++ 等程序中调用的一组函数,而本文讨论的是 Linux 命令,尽管两者之间关系密切。
3. export
使用 export 命令,可以导出变量,使其可供后续启动的子进程访问。
4. 总结
本文介绍了 Shell 中三个命令的用法:source 或 . 在当前进程中执行命令;exec 用指定命令替换当前进程;export 用于导出变量。