通过在命令行中运行来定义动态函数:
eval "ab() { echo test; }"
它运行并打印测试。
将相同的语句放入脚本中test.sh
,然后执行该脚本。什么都没发生。该函数未定义。
我认为这是因为函数是在脚本内定义的,而不是在脚本外部定义的。所以我尝试在脚本中添加:
export -f ab
但这不起作用。如何将函数从脚本导出到 shell?
答案1
您无法将函数或变量导出到父 shell,只能导出到运行脚本的 shell 或子 shell。
对于更改当前 shell 环境的脚本,您需要使用source
或运行该脚本.
。例如,./myscript.sh
您可以运行而不是运行. ./myscript.sh
这告诉您当前的 shell 本身运行脚本,而不是生成一个子 shell 来运行它......从而允许脚本修改当前环境。