注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

gmd20的个人空间

// 编程和生活

 
 
 

日志

 
 

makefile 不支持SHELL里面的brace expansion花括号/大括号扩展的问题  

2013-12-03 10:31:42|  分类: linux相关 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
make 编译,发现一台机器不支持在makefile里面的shell 命令使用大括号展开,另外一个是支持的。
比如说下面这个简单的makefile
bright@:~$ cat Makefile 
all:
ls ./{Makefile,freediameter}

本来是展开成 ls  ./Makefile  ./freediameter, 结果就报错了
在网上找一下. 这个大括号扩展是bash的功能来, 但make程序如果你不指定shell的话,他默认是使用 /bin/sh的。
sh 不支持这个大括号展开,就出错了。
要解决也很简单,你在Makefile里面通过SHELL变量告诉make使用bash就可以了,像下面这样
bright@debian01:~$ cat Makefile 

SHELL=bash
all:
ls ./{tnt,Makefile}

很奇怪,另外一台机器默认也是用的sh,为什么就没有报错呢?
bright@:~$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Aug 10 12:26 /bin/sh -> bash

bright@debian01:~$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4  3月  1  2012 /bin/sh -> dash

原来他把 /bin/sh 也链接到bash了,但我的机器是没有的。
  评论这张
 
阅读(519)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017