在使用 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
脚本即可。