我想知道如何从脚本内部重新加载shell源代码。 我在脚本中添加了一些别名,我想在它结束时重新加载它,但是直到我从终端手动执行它才能工作:
source ~/.zshrc
我一直在阅读这是不可能的,因为命令在一个不影响全局环境的子进程中运行,但我想知道是否有任何解决方法。
提前谢谢!
答案 0 :(得分:0)
如果脚本执行
source SOMETHING
此文件中的命令在当前环境中执行。这意味着之后可以使用此文件中的定义。如果您要采购~/.zshrc
,这当然也适用,所以您可以这样做。
这样做是否是个好主意,是另一回事。
虽然zsh(与bash不同)允许在非交互式脚本中使用别名,但.zshrc的全部目的是设置交互式环境所需的一切。在非交互式案例中,所有这些设置是否适用或至少不会受到影响是值得怀疑的。
还有一个维护问题:没有人希望有人从您的脚本中获取.zshrc。可能会更改文件.zshrc而不考虑它将影响哪些脚本。您可以将脚本传递给具有完全不同的.zshrc的同事,因此您的脚本将不再起作用。
所以,不要这样做。如果您的脚本需要定义,请将它们放入单独的文件中。如果您也需要以交互方式进行此定义,请从.zshrc
。