在脚本文件中运行已定义的函数时找不到命令

时间:2015-11-25 16:17:03

标签: bash shell

我在bash_profile文件中定义了一个函数。

pse(){
ps -ef|grep $1
}

现在我可以从命令行调用此函数。喜欢

pse kafka

它正常工作,因为我可以看到正确的输出。 但是当我试图在脚本文件中调用pse函数时,它显示“未找到命令”错误。我错过了什么吗?我们不允许从shell脚本调用bash_profile中定义的函数吗? 操作系统:MacOsX Yosemite

1 个答案:

答案 0 :(得分:4)

您可以export来自父shell的函数,使其在子进程中可用:

export -f pse

从手册:

  

出口

export [-fn] [-p] [name[=value]]
     

标记要传递给环境中子进程的每个名称。如果提供了-f选项,则名称引用shell函数;   否则名称引用shell变量。 -n选项意味着   不再标记要导出的每个名称。如果没有提供名称,或者如果   给出了-p选项,列出了所有导出变量的名称   显示。 -p选项以可重用的形式显示输出   作为输入。如果变量名后跟= value,则为值   变量设置为值。

     

除非提供了无效选项,其中一个名称不是有效的shell变量名称,否则返回状态为零,或者提供-f   名称不是shell函数。