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