[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Нужен ли bash



On Mon, Sep 29, 2008 at 05:14:14PM +0400, Andrey Kiselev wrote:
> On Sun, Sep 28, 2008 at 05:51:30PM +0300, Dmitry Nezhevenko wrote:
> > > make вызывает shell для исполнения записанных в нём команд.
> > 
> > В общем случае -- нет
> 
> Как раз в общем случае --- да, а Вы привели случай частный.

У каждого свое понятие общего и частного случаев. make -- штука достаточно
универсальная. Им можно собирать софт из исходников, LaTeX документы, ну и
др. Им же можно и шелл запускать (явно или неявно). Вот тебе другой пример
(который как раз выполнят то, для чего был придуман make):

---
LDFLAGS=-lm
CFLAGS=-Wall

all: test

test: test.o
	$(CC) $(LDFLAGS) -o $@ $<

test.o: test.c
	$(CC) $(CFLAGS) -o $@ -c $<

.PHONEY: all
---

Ну и простой test.c 
int main() { return 0; }

make тут запускает компилятор и линкер. И шелл ему тут нафиг не нужен.

> 
> Да, согласен, в этом случае make разберётся и выполнит команду напрямую,
> однако если записать так:
> 
> all:
> 	sleep 60; sleep 60

Cлив защитан (c). Можно было и явно тут /bin/sh вызвать. Впрочем ладна.. Я
тоже буду передергивать =)
> 
> то ему придётся вызвать шелл (и он таки его вызовет). А это значит, что
> синтаксис мейкфайла непосредственно связан с синтаксисом POSIX-шелла. По
> факту даже не каждое встроенное правило сможет обойтись без шелла.
> 

import os
os.system('sleep 30; sleep 30')

Бидону придется вызывать шелл (и он его таки вызывает). А это значит, что
синтаксис бидона непосредственно связан с синтаксисом POSIX-шелла. 

/* Дальше бред поскипан */
 
-- 
WBR, Dmitry

Attachment: signature.asc
Description: Digital signature


Reply to: