View previous topic :: View next topic |
Author |
Message |
matt1366613 n00b
Joined: 05 Feb 2009 Posts: 48
|
Posted: Mon Apr 06, 2009 9:47 am Post subject: [SOLVED]Małe pytanie na temat skryptów |
|
|
Witam.
Czy ktoś mógłby mi wytłumaczyć jakie są różnice w skryptach zaczynających się od
#!/bin/bash
oraz
#!/sbin/sh
i tak dalej.
Czy to ma tylko charakter informacyjny że dany skrypt jest na przykład skryptem basha a inny nie czy jest w tym coś więcej?
Ewentualnie prosiłbym o odesłanie do jakiejś strony gdzie jest to opisane bo nie mogę znaleźć.
Last edited by matt1366613 on Mon Apr 06, 2009 11:17 am; edited 1 time in total |
|
Back to top |
|
|
no4b Bodhisattva
Joined: 18 Jan 2004 Posts: 774 Location: Tarnów, Poland
|
Posted: Mon Apr 06, 2009 10:50 am Post subject: |
|
|
W większości dystrybucji sh jest linkiem do basha, więc tam nie ma to znaczenia, ale np we FreeBSD już nie jest. Dlatego ma to znacznie dla przenośności. Jeśli nie używasz składni, którą akceptuje tylko bash lepiej używać #!/bin/sh. _________________ GTK2/GNOME - The weakest link! |
|
Back to top |
|
|
matt1366613 n00b
Joined: 05 Feb 2009 Posts: 48
|
Posted: Mon Apr 06, 2009 11:17 am Post subject: |
|
|
Wielkie dzięki. |
|
Back to top |
|
|
canis_lupus l33t
Joined: 22 Dec 2005 Posts: 773 Location: Kraków
|
Posted: Tue Apr 07, 2009 10:14 am Post subject: |
|
|
a czemu to jest zakomentowane? _________________ "I love you cię" Różyczko... |
|
Back to top |
|
|
Ahenobarbi Retired Dev
Joined: 02 Apr 2009 Posts: 345 Location: Warsaw, PL
|
Posted: Tue Apr 07, 2009 11:17 am Post subject: |
|
|
canis_lupus wrote: | a czemu to jest zakomentowane? |
Żeby ludzie, którym się nie chce pisać tej linijki mogli ją pominąć i nie mieć z tego powodu problemów? |
|
Back to top |
|
|
SlashBeast Retired Dev
Joined: 23 May 2006 Posts: 2922
|
Posted: Tue Apr 07, 2009 11:38 am Post subject: |
|
|
Przeca jak plik ma +x i go wywolamy ./plik to musi byc wiadomo, w czym to odpalic, dlatego jest tam bash, sh, python, perl czy inne wpisane.
Dlugosc #! nie moze miec wiecej niz 25znakow, z tego co pamietam. |
|
Back to top |
|
|
znal Apprentice
Joined: 12 Jul 2007 Posts: 190
|
Posted: Tue Apr 07, 2009 3:43 pm Post subject: |
|
|
To co jest po #! w 1 linii pliku mówi jaki ma być interpreter dla danego pliku. W momencie wywołania dodawana jest do tego nazwa skryptu. Interpreterem może być cokolwiek, nie tylko bash, perl itp. np. taki skrypt sam wypisze swoją zawartość:
ZTCW nie ma specjalnych ograniczeń na długość tej linii, wszystko co wystąpi po nazwie polecenia jest jego parametrem (jako czysty tekst). Jeśli powłoką jest bash, a skrypt nie ma określonego interpretera, to domyślnie jest traktowany jako skrypt basha. Więcej info w man bash. |
|
Back to top |
|
|
SlashBeast Retired Dev
Joined: 23 May 2006 Posts: 2922
|
Posted: Tue Apr 07, 2009 3:57 pm Post subject: |
|
|
Na 100% jest ograniczenie co do ilosci znaków w tej lini, tylko nie moge sobie przypomniec jakie. |
|
Back to top |
|
|
XianN Tux's lil' helper
Joined: 21 Jan 2006 Posts: 82 Location: .wroc.pl
|
Posted: Sat Apr 11, 2009 2:39 am Post subject: |
|
|
No to taki szybki tescik zrobimy i pokazemy, ze SlashBeast ma racje:)
Code: | xiann@heifer ~/bin $ ./dlugi.sh
#!/bin/../bin/../bin/../bin/../bin/../bin/../bin/../bin/../bin/../bin/../bin/../bin/../bin/../bin/../bin/../bin/../bin/cat
xiann@heifer ~/bin $ sed 's:cat$:../bin/cat:' dlugi.sh | tee dlugi.sh
#!/bin/../bin/../bin/../bin/../bin/../bin/../bin/../bin/../bin/../bin/../bin/../bin/../bin/../bin/../bin/../bin/../bin/../bin/cat
xiann@heifer ~/bin $ ./dlugi.sh
bash: ./dlugi.sh: /bin/../bin/../bin/../bin/../bin/../bin/../bin/../bin/../bin/../bin/../bin/../: zły interpreter: Nie ma takiego pliku ani katalogu
xiann@heifer ~/bin $ |
|
|
Back to top |
|
|
|