如何导出eval定义的函数?

如何导出eval定义的函数?

通过在命令行中运行来定义动态函数:

eval "ab() { echo test; }"

它运行并打印测试。

将相同的语句放入脚本中test.sh,然后执行该脚本。什么都没发生。该函数未定义。

我认为这是因为函数是在脚本内定义的,而不是在脚本外部定义的。所以我尝试在脚本中添加:

export -f ab

但这不起作用。如何将函数从脚本导出到 shell?

答案1

您无法将函数或变量导出到父 shell,只能导出到运行脚本的 shell 或子 shell。

对于更改当前 shell 环境的脚本,您需要使用source或运行该脚本.。例如,./myscript.sh您可以运行而不是运行. ./myscript.sh

这告诉您当前的 shell 本身运行脚本,而不是生成一个子 shell 来运行它......从而允许脚本修改当前环境。

相关内容