从脚本文件调用 Bash 函数失败,而从终端调用成功

从脚本文件调用 Bash 函数失败,而从终端调用成功

在使用 Bash 的 Ubuntu 16.04 中,我创建了一个文件,其中包含一个没有调用的$HOME/ulcwe/software_internal.sh函数。rse()该文件源自~/.bashrc(它是由其自身获取的),我可以rse从终端中的任何位置调用,并且它将运行而不会出现错误。

但我试着跑这个脚本文件其中包含对第 36 行的调用rse,我收到此错误:

第 36 行:rse:未找到命令

为什么函数在手动调用(rse在 Bash 中键入并执行)中调用成功,但在 Bash 脚本中调用失败?如何从脚本中成功调用它?

答案1

您必须确保该函数可用于脚本。您可以通过两种方式执行此操作:

  1. source包含函数定义的文件,或者
  2. export调用脚本之前的函数(export -f rse将导出函数)。

函数与 shell 变量一样,不是脚本继承的环境的一部分。必须导出 Shell 变量,使其成为环境变量,并且bash同样可以导出函数。

导出的函数不能被调用任何过程,只需通过其他bash脚本即可。

相关内容