我通常zsh
。我想在 bash 中执行一个函数并返回到我的原始 shell。我可以手动执行此操作,但我想自动执行。我该怎么做?
例如,我在 zsh 上。我想执行func
,这是一个function()
in 文件。我正在我的文件中bigscript.sh
获取文件。 我尝试在文件中添加 shebang,但这并没有改变 shell。我尝试了另一种方法,即放入一个独立文件并向其中添加 shebang。它成功了。但是,我不想将文件拆分成更小的文件。bigscript.sh
.zshrc
#!/bin/bash
bigscript.sh
function
function.sh
.sh
那么,对于更改单个功能的 shell 有什么建议吗?
答案1
一般来说,如果你想执行 bash 函数,你需要使用 bash 解释器。一些函数可能在 zsh 中工作,因为它有类似的语法,但存在一些差异可能会让你困惑。试试这个。
bash -c 'source bigscript.sh && func'
执行此操作时会遇到一些问题。如果函数正在设置变量或别名,则 zsh 将看不到这些变量或别名。此外,如果bigscript.sh
包含任何不在函数内的代码,它将在源完成时执行,因此请小心。您最不希望发生的事情是bigscript.sh
意外删除某些文件或进行任何其他意外更改。如果bigscript.sh
只是一组函数,那么应该没问题。您的 zsh 会话将能够收集函数的返回/退出代码以及它写入 stdout 的任何输出。