在不同的 shell 中执行函数

在不同的 shell 中执行函数

我通常zsh。我想在 bash 中执行一个函数并返回到我的原始 shell。我可以手动执行此操作,但我想自动执行。我该怎么做?

例如,我在 zsh 上。我想执行func,这是一个function()in 文件。我正在我的文件中bigscript.sh获取文件。 我尝试在文件中添加 shebang,但这并没有改变 shell。我尝试了另一种方法,即放入一个独立文件并向其中添加 shebang。它成功了。但是,我不想将文件拆分成更小的文件。bigscript.sh.zshrc#!/bin/bashbigscript.shfunctionfunction.sh.sh

那么,对于更改单个功能的 shell 有什么建议吗?

答案1

一般来说,如果你想执行 bash 函数,你需要使用 bash 解释器。一些函数可能在 zsh 中工作,因为它有类似的语法,但存在一些差异可能会让你困惑。试试这个。

bash -c 'source bigscript.sh && func'

执行此操作时会遇到一些问题。如果函数正在设置变量或别名,则 zsh 将看不到这些变量或别名。此外,如果bigscript.sh包含任何不在函数内的代码,它将在源完成时执行,因此请小心。您最不希望发生的事情是bigscript.sh意外删除某些文件或进行任何其他意外更改。如果bigscript.sh只是一组函数,那么应该没问题。您的 zsh 会话将能够收集函数的返回/退出代码以及它写入 stdout 的任何输出。

相关内容