Joh*_*man 4 scripting bash function
我的 .bashrc 变得有点长,所以我决定根据主题将它分解成更小的文件,然后从 .bashrc 中调用这些文件
#my long .bashrc file
bash .topic1rc
bash .topic2rc
Run Code Online (Sandbox Code Playgroud)
但是,在这些子脚本之一中,我创建了一个 bash 函数。不幸的是,它不再像在我将所有东西分成块之前那样对我可用。如何将我的 .bashrc 文件分成多个块,但保留对我创建的变量和函数的访问权限?
如果我正确理解您的问题,您需要source
或.
您的文件。例如,在您.bashrc
和处理订单中(只有您知道):
source .topic1rc
source .topic2rc
Run Code Online (Sandbox Code Playgroud)
source
.
为了便于使用,可以在命令行上缩短为- 它是完全相同的命令。的作用source
是有效地内联被调用的脚本。
您正在做的事情不起作用,因为每个都bash .topic1rc
调用一个新的 bash shell 作为子进程,并且无法将环境、shell 变量或函数传回父进程,即您感兴趣的 bash shell。
你想要做的是使用.
命令(也可以作为更详细的source
- 任何一个都做同样的事情)。这会读取当前 shell 中的给定脚本,而不是读取到新 shell 中。所以:
#my long .bashrc file
. ~/.topic1rc
. ~/.topic2rc
Run Code Online (Sandbox Code Playgroud)
(它可能适用于几乎所有用途,省略路径,因为 main~/.bashrc
通常在您登录时执行,并且您的主目录是您的初始工作目录,但最好将其拼写出来。)