如何导入要在PHPExec/system/etc中使用的自定义bash函数?

如何导入要在PHPExec/system/etc中使用的自定义bash函数?,php,bash,shell,unix,Php,Bash,Shell,Unix,我正在编写一个命令行应用程序,它将替代一组bash函数和开发人员的手工工作。目前,我们通常所做的工作有一半是在一个~/.functions文件中进行的,该文件源于每个开发人员的~/.bash\u配置文件 我的命令行应用程序是用PHP编写的,有一段时间我需要从应用程序内部运行其中一些函数。但是,以下代码不起作用,输出表示找不到给定函数: exec('bash my_legacy_functions.sh'); exec('my_custom_legacy_function param1 param

我正在编写一个命令行应用程序,它将替代一组bash函数和开发人员的手工工作。目前,我们通常所做的工作有一半是在一个
~/.functions
文件中进行的,该文件源于每个开发人员的
~/.bash\u配置文件

我的命令行应用程序是用PHP编写的,有一段时间我需要从应用程序内部运行其中一些函数。但是,以下代码不起作用,输出表示找不到给定函数:

exec('bash my_legacy_functions.sh');
exec('my_custom_legacy_function param1 param2');

我可能错了,但我可以理解,每个
exec()
调用都在一个单独的进程中运行一个命令,这意味着这些函数将无法用于后续
exec()
调用。这是正确的吗?如果是,是否有可能在不必将所有内容捆绑到一个调用中的情况下重写此行为?

最终,默认shell不是bash,并且在该源之上不是bash中的常见命令。我由此发现解决方案如下:

function run($cmd) {
    exec("bash -c 'source my_legacy_functions.sh; $cmd'");
}
exec('foo1;foo2;foo3')
就可以了。