请教一个exec.Command的问题

karl_zhao · 2018-05-23 09:57:17 · 5363 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2018-05-23 09:57:17 的主题,其中的信息可能已经有所发展或是发生改变。

本人是一名新手,今天遇到了一个go调用linux执行文件的问题。 在服务器的PATH里面有些命令是alias生成的,通过exec.Command无法让它执行起来,我以“ll”命令为例,实现如下:

cmd := "ll"
params := []string{"-a", "/home"}

exec.Command(cmd, params).Output()

可是上面的代码没有任何输出,我分析了一下没有运行起来。

初步分析应该是ll命令是一个alias命令,我换成ls就可以了。

但是在实际项目里面确实有几个工具是alias的。

所以,我想请教一下,对于alias的执行文件,怎么才能通过exec.Command来实现呢?

谢谢各位大牛!


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

5363 次点击  
加入收藏 微博
3 回复  |  直到 2018-05-25 07:44:10
channel
channel · #1 · 7年之前

别名在终端之所以生效,是因为登录终端时,执行了定义别名的脚本;而你这里没生效,是因为这个定义别名的脚本没有执行,相当于上下文环境中没有这些别名。你试试找到定义别名的地方,然后在代码中先执行下 source 命令试试?

icexin
icexin · #2 · 7年之前
cmd := "..."
exec.Command("bash", "-c", cmd)
karl_zhao
karl_zhao · #3 · 7年之前
icexinicexin #2 回复

``` cmd := "..." exec.Command("bash", "-c", cmd) ```

谢谢,问题已解决!

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传