![从脚本文件调用 Bash 函数失败,而从终端调用成功](https://linux22.com/image/128905/%E4%BB%8E%E8%84%9A%E6%9C%AC%E6%96%87%E4%BB%B6%E8%B0%83%E7%94%A8%20Bash%20%E5%87%BD%E6%95%B0%E5%A4%B1%E8%B4%A5%EF%BC%8C%E8%80%8C%E4%BB%8E%E7%BB%88%E7%AB%AF%E8%B0%83%E7%94%A8%E6%88%90%E5%8A%9F.png)
在使用 Bash 的 Ubuntu 16.04 中,我创建了一个文件,其中包含一个没有调用的$HOME/ulcwe/software_internal.sh
函数。rse()
该文件源自~/.bashrc
(它是由其自身获取的),我可以rse
从终端中的任何位置调用,并且它将运行而不会出现错误。
但我试着跑这个脚本文件其中包含对第 36 行的调用rse
,我收到此错误:
第 36 行:rse:未找到命令
为什么函数在手动调用(rse
在 Bash 中键入并执行)中调用成功,但在 Bash 脚本中调用失败?如何从脚本中成功调用它?
答案1
您必须确保该函数可用于脚本。您可以通过两种方式执行此操作:
source
包含函数定义的文件,或者export
调用脚本之前的函数(export -f rse
将导出函数)。
函数与 shell 变量一样,不是脚本继承的环境的一部分。必须导出 Shell 变量,使其成为环境变量,并且bash
同样可以导出函数。
导出的函数不能被调用任何过程,只需通过其他bash
脚本即可。