Linux 命令行在shell 和Makefile的区别

      Linux 命令行在shell 脚本和Makefile会有些不一样的差别,一个shell是一个进程,shell 脚本的命令都是在shell一个进程进行,前后命令会有所影响;而makefile里的每一行命令是一个单独的进程,只在单行里有影响,不对上下文影响。比如在test 目录下建立一个软链接:

在脚本里执行

#!/bin/bash

cd test
ln -sf /usr/bin/mytest lntest
cd ../

建立软链接成功,但是相同的语法在makefle 就无法成功:

.PHONY testln

testln:

        cd test
        ln -sf /usr/bin/mytest lntest
        cd ../

运行发现,lntest建立的软链接在当前makefile 目录下,而并不在test里面。修改如下:

.PHONY testln

testln:

        cd test; ln -sf /usr/bin/mytest lntest

运行后,达到预期,test 目录下建立一个软链接。因此关联的所有命令必须在同一行执行完;如果太长可以加“\” 进行换行拼接处理。例如:

.PHONY testln

testln:

        cd test;\

        ln -sf /usr/bin/mytest lntest

     shell cd改了目录,会作用到后面命令,所以需要cd 返回还原执行目录状态,而Makefile 每行是单独的进程,cd 不会影响到下一行的进程,因此,不需要在cd ../返回到上级目录。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值