当设置一个目录为持久化时,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
)上执行此操作时,您设置variable
为value
并将变量标记为“已导出”,即它会变成一个环境变量,该变量将由从同一 shell 启动的后续进程继承。没有启动新的 shell export
。
答案2
生成新的 shell 是没有意义的,它.bashrc
不是一个脚本,而是一个文本文件。当您监视 shell 的 PID 并对您的.bashrc
.为了让它们生效,只需获取文件:
. ~/.bashrc
没有产生新的进程。就好像您手动键入了该文件中包含的所有这些行一样。export
其本身不需要新的外壳。它只是改变了环境,可继承于未来。