在脚本文件中使用时函数不起作用..显示错误命令未找到

在脚本文件中使用时函数不起作用..显示错误命令未找到

我正在使用 rhel 5。我正在学习 shell 脚本。我创建了一个名为

vi /etc/bashrc(这样我即使在注销后也可以使用此功能)

currenttime()
{
echo -e "Current time is `date`";
echo -e "Calendar Of this month is `cal`";
echo -e "Good Bye Mr.$USER ..Have good day";
}

现在,如果我正常使用这个函数,那么就没有问题了。但是当我在脚本文件下使用这个函数并尝试执行该脚本时。现在它显示错误“currenttime未找到命令”

Vi 我的脚本

currenttime 

chmod +x my_script
sh my_script
currenttime command not found.

现在我无法理解当前时间是否以正常方式正常工作,例如 #currenttime -----工作正常

但是,如果我在文件中使用它,它会显示错误。你能告诉我这背后的逻辑吗?

答案1

您必须加载/etc/bashrc您的自定义脚本,因为此文件~/.bashrc仅适用于交互式 shell。

#!/bin/bash
source /etc/bashrc
currenttime

答案2

@多于

你是对的,先生。我还有一些解释。就像

您可以在使用交互式 shell 时(即在 CLI 上工作时)使用您的函数。这是因为 /etc/bashrc 是启动时所有交互式 shell 的来源(当然,如果您的发行版是这样配置的)。

但是您不能在脚本上使用相同的函数。这是因为脚本对您的函数一无所知。/etc/bashrc 仅用于交互式 shell,不用于非交互式 shell(即为脚本执行而生成的子 shell)。

您必须手动 source /etc/bashrc,或者在您的脚本中包含功能代码,或者将功能代码写在另一个脚本中,然后其他脚本才能 source 该功能代码。

相关内容