.bashrc 是否创建一个父 shell,在其中生成当前工作 shell

.bashrc 是否创建一个父 shell,在其中生成当前工作 shell

当设置一个目录为持久化时,export应该使用并将其添加到 ~/.bashrc

PATH="$PATH":/usr/local/mysql/bin
export PATH

这是否意味着我当前的工作 shell 是从脚本 ~/.bashrc 中的父 shell 创建的子 shell

$ var=3; export var; bash
$ echo $var
3

父 shell 将变量导出到子 shell。

~/.bashrc这样行得通吗?

答案1

不,~/.bashrc不会启动新的 shell。

初始化~/.bashrc文件是来源,即在与调用它的 shell 相同的环境中读取和执行(不作为脚本运行)。

shell 本质上是在做source ~/.bashrc. ~/.bashrc执行文件的内容,而无需生成新的 shell 实例。

当您export variable=value在命令行(或variable=value; export variable)上执行此操作时,您设置variablevalue并将变量标记为“已导出”,即它会变成一个环境变量,该变量将由从同一 shell 启动的后续进程继承。没有启动新的 shell export

答案2

生成新的 shell 是没有意义的,它.bashrc不是一个脚本,而是一个文本文件。当您监视 shell 的 PID 并对您的.bashrc.为了让它们生效,只需获取文件:

. ~/.bashrc

没有产生新的进程。就好像您手动键入了该文件中包含的所有这些行一样。export其本身不需要新的外壳。它只是改变了环境,继承于未来。

相关内容