如何获取 zshrc 中的源文件以在 bash 中运行?

如何获取 zshrc 中的源文件以在 bash 中运行?

我有一个包含许多函数的 bash 脚本。我希望这个脚本使用 bash 运行。该脚本的顶部有:

echo "BASH_VERSION""$BASH_VERSION"
echo "ZSH_VERSION""$ZSH_VERSION"

目前我可以看到脚本在 ZSH 中运行。

如何让脚本使用 bash 运行?我已经#!/usr/bin/env bash在文件顶部但它仍然不起作用。我在用着source

答案1

如果您使用 运行脚本source,则脚本文件中的命令将由 和 执行当前的shell 环境,无论#!脚本的 -line 说什么(该行只是注释,在这种情况下将被忽略)。这就是作用source

如果通过在命令行上给出脚本的路径和名称(例如,)来运行脚本,则假设该文件是可执行的,它将由脚本开头的 -line./myscript中提到的解释器运行#!。文件中的函数定义和变量等在脚本运行期间将处于活动状态,但在脚本终止时将与脚本环境的其余部分一起被销毁。

如果脚本文件包含您想要在当前 shell 环境中访问的函数的定义zsh,并且文件中的函数是以与 shell 兼容的方式编写的zsh,那么采购它就是合适的做法。

如果函数是为bashshell 显式编写的(使用bash特定变量等),那么您可能希望将应用程序的其余部分编写为单独的bash脚本,并从该脚本中使用函数获取文件。或者,您可能希望重写 shell 的函数zsh,然后在zshshell 中获取重写的函数定义。

相关内容