如何导入要在PHP exec/system/等中使用的自定义bash函数


How to import custom bash functions to be used in PHP exec/system/etc?

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

我的命令行应用程序是用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'");
}