[ misa vranje @ 30.11.2004. 22:34 ] @
Zanima me da li postoji razlika izmedju unix shell-ova osim u shell scriptingu
i zasto se BASH najvise koristi jer cujem da ima i kompleksnijih shellova koji imaju u svom shell scriptingu ubacene i nove tehnike programiranja.Primer takvog shell-a je zsh.Cujem da postoji i neki psh(perl shell) i drugi koji mogu biti zanimljiviji od BASH-a.Molim da mi neko pojasni razlike izmedju ovih shell-ova.
Hvala
[ Dejan Lozanovic @ 01.12.2004. 08:28 ] @
Iskreno manje vise si sam vec odgovorio na svoje pitanje, svaki shell ima neke svoje specificnosti i nije tesko napisati svoj shell ako zelis mogu da ti posaljem mali rucni shell cisto da vidis kako stvari jednostavno rade :)
[ EArthquake @ 01.12.2004. 21:39 ] @


mislim da je stvar ukusa koj shell koristis u radu ali i kao dodje do pisanja skript ne vidim velike razlike
mada ih naravno ima
[ neetzach @ 02.12.2004. 11:31 ] @
Najbolji nacin da se informises o shellovima je da pogledas uputstvo za njihovo koriscenje. Doduse, tu neces dobiti presek mogucnosti izmedju raznih shellova.

Recimo, koliko sam imao prilike da procitam iz literature za Korn Shell, doticni se smatra nesto brzim Bourne Shella (i Bourne Again Shella) zbog vece broja internih funkcija - tj. BASH recimo, za istu stvar koristi eksterne komande (tipa "test" i sl.)

Kao sto si pomenuo, imas i modifikacija shellova za specificne namene, npr. dtksh - Korn Shell sa Motif ekstenzijama, pa ga mozes pisati skripte sa sve prozorima i sl.
[ Apatrid @ 02.12.2004. 20:20 ] @
Na vecinu pitanja iz pocetne poruke je odgovoreno, ostalo je samo pitanje "zasto se najvise skripti pise za BASH".

Razlozi su istorijski. Prvi shell koji se pojavio, dugo de facto standard na UNIX (i unixolikim) masinama je bio Bourne shell (/bin/sh). Zbog tih istorijskih razloga, Bourne shell se mogao naci na svakoj Unix masini u to doba. Iz tog vremena potice i praksa da se skripte pisu bas na Bourne shell-u. Logika je, svaka masina ga ima.

Iako su se kasnije pojavile i usle u masovnu upotrebu mnoge jace i mocnije alternative, korisnici su se vodili logikom da na Unix masinu instaliraju i te druge shell-ove (svaki korisnik, vec prema afinitetima, izabrao bi svoj shell), ali je /bin/sh uvijek bio tu, jer je gomila skripti bila vec napisana za njega.

Originalni Bourne shell je parce starog unix-a, na linuxu se masovno koristi BASH (Bourne Again SHell) kao open source rijesenje. Posto BASH moze da izvrsi bilo koju skriptu koju je mogao da izvrsi stari Bourne shell, bash se danas pojavljuje kao nasljednik "standarda za pisanje skripti".

Lijepa stranica sa istorijatom shell-ova moze se naci ovdje
[ Dejan Lozanovic @ 03.12.2004. 18:58 ] @
Evo ga source, mada je ovo jako kratko tek toliko da demonstrira kako to radi, ono sto bi jos u ovom shell-u trebalo da se doda je sama komanda cd. Inace primer je iz knjige od Advanced Programing in Unix Environment, od Richard W Stiwens-a, samo su izbacene stiwensove funkcije da ti sada ne saljem i celu njegovu mini biblioteku

Code:

#include <sys/types.h>
#include <sys/wait.h>
#include <stdio.h>
#include <stdlib.h>

#define MAXLINE 4096

int
main(void)
{
        char    buf[MAXLINE];
        pid_t   pid;
        int             status;

        printf("%% ");  /* print prompt (printf requires %% to print %) */
        while (fgets(buf, MAXLINE, stdin) != NULL) {
                buf[strlen(buf) - 1] = 0;       /* replace newline with null */

                if ( (pid = fork()) < 0){
                  fprintf(stderr,"fork error\n");
                  exit(1);
                }
                else if (pid == 0) {            /* child */
                        execlp(buf, buf, (char *) 0);
                        fprintf(stderr,"couldn't execute: %s\n", buf);
                        exit(127);
                }

                /* parent */
                if ( (pid = waitpid(pid, &status, 0)) < 0){
                  fprintf(stderr,"waitpid error\n");
                  exit(1);
                }
                printf("%% ");
        }
        exit(0);
}
[ Sundance @ 04.12.2004. 10:54 ] @
I cijela ta prica sa Bash-om se odnosi samo i iskljucivo na na linux. Nijedan unix na svijetu osim njega nema bash kao defaultni shell i on je ujedno jedini kod kojeg je /bin/sh == bash. Ujedno i nije 100% backwards compatible jer POSIX-confomance razbija neke dijelove kompatibilnosti sa sh. Danas je najpopularniji zato sto je vrlo lagan za nauciti i najportabilniji od svih drugih shellova.
[ Dejan Lozanovic @ 03.01.2005. 15:21 ] @
Pa sada i komercijalni unixi stavljalju bash, a drugo ako bash pokrenes kao sh, onda ce se sam bash pokrenuti u 100% kompatibilnom modu sa sh. Drugim recima 2 u 1 :)

[admin: obrisan nepotreban citat]
[ FormatC @ 17.01.2005. 02:34 ] @
GNU Hurd koristi bash.
[ random @ 17.01.2005. 13:30 ] @
ash je odličan sh.