Arc*_*ing 2 source shell-script files bash-functions
在使用 Bash 的 Ubuntu 16.04 中,我创建了一个文件$HOME/ulcwe/software_internal.sh
,其中包含一个rse()
没有调用的函数。该文件源自~/.bashrc
(它是由其自身获取的),我可以rse
从终端中的任何位置调用,并且它将运行而不会出现错误。
然而,我尝试运行此脚本文件,其中包含对第 36 行的调用rse
,但出现此错误:
第 36 行:rse:未找到命令
为什么函数在手动调用(rse
在 Bash 中键入并执行)中调用成功,但在 Bash 脚本中调用失败?如何从脚本中成功调用它?
您必须确保该函数可用于脚本。您可以通过两种方式执行此操作:
source
包含函数定义的文件,或者export
调用脚本之前的函数(export -f rse
将导出函数)。函数与 shell 变量一样,不是脚本继承的环境的一部分。必须导出 Shell 变量,使其成为环境变量,并且bash
同样可以导出函数。
导出的函数不能由任何进程调用,只能由其他bash
脚本调用。