从脚本

时间:2018-02-19 08:39:50

标签: shell zsh

我想知道如何从脚本内部重新加载shell源代码。 我在脚本中添加了一些别名,我想在它结束时重新加载它,但是直到我从终端手动执行它才能工作:

source ~/.zshrc

我一直在阅读这是不可能的,因为命令在一个不影响全局环境的子进程中运行,但我想知道是否有任何解决方法。

提前谢谢!

1 个答案:

答案 0 :(得分:0)

如果脚本执行

source SOMETHING

此文件中的命令在当前环境中执行。这意味着之后可以使用此文件中的定义。如果您要采购~/.zshrc,这当然也适用,所以您可以这样做。

这样做是否是个好主意,是另一回事。

虽然zsh(与bash不同)允许在非交互式脚本中使用别名,但.zshrc的全部目的是设置交互式环境所需的一切。在非交互式案例中,所有这些设置是否适用或至少不会受到影响是值得怀疑的。

还有一个维护问题:没有人希望有人从您的脚本中获取.zshrc。可能会更改文件.zshrc而不考虑它将影响哪些脚本。您可以将脚本传递给具有完全不同的.zshrc的同事,因此您的脚本将不再起作用。

所以,不要这样做。如果您的脚本需要定义,请将它们放入单独的文件中。如果您也需要以交互方式进行此定义,请从.zshrc

中获取该文件