如何执行bash shell函数

如何执行bash shell函数,bash,shell,go,Bash,Shell,Go,我们有大量用于各种用途的shell函数,它们被添加到.bash_配置文件中,我们每天都在使用它们。我们像调用常规二进制文件一样调用这些函数 我试图从Go应用程序内部调用这些相同的shell函数,但它找不到它们,因为它显然是在不同的上下文中运行的,并且在我的$PATH中找不到这些函数 错误是: exec:“finderx”:在$PATH中找不到可执行文件 有人知道如何在运行Go应用程序的终端的相同上下文中执行shell命令吗?或者,如果可能的话,我不想重新实现这些功能,可以重新为它们提供一些资源。

我们有大量用于各种用途的shell函数,它们被添加到.bash_配置文件中,我们每天都在使用它们。我们像调用常规二进制文件一样调用这些函数

我试图从Go应用程序内部调用这些相同的shell函数,但它找不到它们,因为它显然是在不同的上下文中运行的,并且在我的$PATH中找不到这些函数

错误是:
exec:“finderx”:在$PATH中找不到可执行文件

有人知道如何在运行Go应用程序的终端的相同上下文中执行shell命令吗?或者,如果可能的话,我不想重新实现这些功能,可以重新为它们提供一些资源。

我想像我们在脚本中那样调用它们,以缓解过渡期。我们将逐渐地将所有内容转移到另一个领域,但是现在,我们必须使用shell函数创建一个可以运行命令行参数的包装器脚本。 例如:

/home/user/run.sh

#!/bin/sh
source ~/.bash_profile
$1
测试。开始

package main

import (
    "fmt"
    "os/exec"
)  

func main(){
    testCmd := exec.Command("/home/user/run.sh","func123")        
    testOut, err := testCmd.Output()
    if err != nil {
        panic(err)
    } 
    fmt.Println(string(testOut))
}

我想您只需调用
bash-l-c“您的别名函数”

只要确保您的
.bash\u别名
或另一个包含函数的点文件来自
.bashrc
(顺便说一下,它应该来自
.bash\u配置文件
,因为非交互式登录shell不会读取
.bashrc
)。

如果它是shell函数,它就不是可执行文件。您只能从该shell中调用shell函数。请理解这一点。但是,如果应用程序是从该shell中运行的,那么是否无法查看这些函数?这仅仅是一个CLI工具,用于最终替换shell函数
bash-c
。。。。。。仍然不好,给出了退出状态127@Cheyne我刚刚通过调用shell别名检查了我的解决方案,该别名定义为一个函数-一切正常:)