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

我正在使用rhel 5.我正在学习shell脚本。我创build了一个名为的函数

vi / etc / bashrc(这样即使注销后我也可以使用这个function)

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

现在,如果我使用这个function正常,那么没有问题。 但是,当我在一个脚本文件下使用这个函数,并尝试执行该脚本。 现在它显示错误当前时间命令未find

Vi my_script

 currenttime chmod +x my_script sh my_script currenttime command not found. 

现在我无法理解当前时间是否正常工作正常,如#currenttime —–正常工作

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

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

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

@以上

你是对的先生..我有更多的expalination.it就像

当您使用交互式shell(例如,当您在CLI上工作时),您可以使用您的function。 这是因为/ etc / bashrc是在启动时由所有交互式shell产生的(如果你的发行版是这样configuration的话)。

但是你不能在脚本中使用相同的function。 那是因为你的脚本不知道你的函数。 / etc / bashrc它只用于交互式shell,而不是非交互式shell(也就是用于脚本执行的子shell)。

您必须手动input/ etc / bashrc,或者在脚本中包含function代码,或者在另一个脚本上写下function代码,然后由其他脚本代码。