本人是一名新手,今天遇到了一个go调用linux执行文件的问题。
在服务器的PATH里面有些命令是alias生成的,通过exec.Command无法让它执行起来,我以“ll”命令为例,实现如下:
```go
cmd := "ll"
params := []string{"-a", "/home"}
exec.Command(cmd, params).Output()
```
可是上面的代码没有任何输出,我分析了一下没有运行起来。
初步分析应该是ll命令是一个alias命令,我换成ls就可以了。
但是在实际项目里面确实有几个工具是alias的。
所以,我想请教一下,对于alias的执行文件,怎么才能通过exec.Command来实现呢?
谢谢各位大牛!
别名在终端之所以生效,是因为登录终端时,执行了定义别名的脚本;而你这里没生效,是因为这个定义别名的脚本没有执行,相当于上下文环境中没有这些别名。你试试找到定义别名的地方,然后在代码中先执行下 source 命令试试?
#1
更多评论
```
cmd := "..."
exec.Command("bash", "-c", cmd)
```
#2