Skrytp - co robie zle

Andrzej Szombierski qq w kuku.eu.org
Pią, 16 Sty 2004, 20:26:21 CET


On Fri, 16 Jan 2004, Daniel Mróz wrote:

> Użytkownik Andrzej Szombierski napisał:
> >>#!/bin/sh jest i tak pomijane bo jest zahaszowane
> > tak, chociaż na podstawie tej linijki kernel wie że to jest skrypt 
> > do uruchomienia przez /bin/sh
> Nie kernel tylko shell i nie jest pomijane.

A ja bym się jednak nie zgodził. W ogólnym przypadku w momencie wywołania 
execve() kernel wczytuje sobie pierwsze ileśtam bajtów i sprawdza czy to 
jest nagłówek elf czy inny czy właśnie "#!". Jeżeli teraz w pierwszej 
linijce stoi #!/bin/sh, to kernel odpala /bin/sh <nazwaskryptu>, a sh 
ignoruje wszystkie linijki zaczynające się od "#".

Możliwe że niektóre shelle wczytują tę linijkę i uruchamiają interpreter 
bezpośrednio.. ale np. bash czy zsh tego nie robią.

-- 
: Andrzej Szombierski : anszom w v-lo.krakow.pl : qq w kuku.eu.org :
: anszom w bezkitu.com ::: radio bez kitu <=> http://bezkitu.com :



Więcej informacji o liście dyskusyjnej pld-users-pl