Execline

A Unix/Linux szerverek üzemeltetése wikiből
A lap korábbi változatát látod, amilyen Drspider (vitalap | szerkesztései) 2009. január 3., 16:29-kor történt szerkesztése után volt.

(eltér) ←Régebbi változat | Aktuális változat (eltér) | Újabb változat→ (eltér)

1 Az execline shell

1.1 Fordítás/telepítés

Az execline-t Ubuntu 8.10-en próbáltam ki. Sajnos csomag formájában nem található meg a Debian és Ubuntu disztribúciókban, ezért forrásból kell telepíteni.

A tarball letölthető a http://www.skarnet.org/software/execline/install.html címről, ugyanitt részletes telepítési utasítás is található, mivel azonban a szokásos make/make install lépéseknél többre van szükség, ezért a fordítás menetét kicsit részletezem. Szükség lesz a skalibs könyvtárra, ez szerencsére csomagból telepíthető:

{{{

   # apt-get install skalibs-dev

}}}

A tarballt kicsomagolva tapasztalhatjuk, hogy az execline a kissé szokatlan slashpackage konvenciót alkalmazza, a programot egyébként a 4 pontos BSD licensszel terjesztik.

A szokatlan könyvtárelrendezés miatt a fordításhoz néhány trükk szükséges, először is, az execline-x.yy.tar.gz-t csomagoljuk ki a {{{$prefix/package}}} könyvtárba (ahol {{{$prefix}}} tetszőleges útvonal, célszerűen a saját /home könyvtárunkban). Ezután:

{{{

   $ cd $prefix/package/admin/execline-x.yy/
   $ echo $prefix > conf-compile/conf-sp_root

}}}

Ezzel beállítottuk a fordításhoz szükséges relatív útvonalat, ami egyébként a gyökérkönyvtárra mutatott volna. Ezután azért, hogy a fordító megtalálja a skalibs include-fájlokat:

{{{

   $ mkdir -p $prefix/package/prog/skalibs/
   $ ln -s /usr/include/skalibs/ $prefix/package/prog/skalibs/include
   $ ln -s /usr/lib/skalibs/ $prefix/package/prog/skalibs/library
   $ ln -s /usr/include/skalibs/sysdeps/ $prefix/package/prog/skalibs/sysdeps

}}}

Ezek után a csomag remélhetőleg szerencsésen lefordítható az alábbi parancs kiadásával:

{{{

   $ package/compile

}}}

A keletkező binárisok a {{{command/}}} alkönyvtárban lesznek.

1.2 Működési elv

A nyelv alapja az úgynevezett láncolt betöltés (chain loading), amit Bernstein-láncolásnak ([http://www.faqs.org/docs/artu/ch07s02.html Bernstein chaining]) is neveznek, egy alapvető UNIX-os technika, amit sok program használ. Ennek lényege a következő:

  • a UNIX-os programok indítása az execve() rendszerhívással történik, amelyet
 három argumentummal kell meghívni:
** a program nevével (redundáns)
** a parancssori agumentumok listájával: {{{argv}}}, ahol {{{argv[0]}}}
      a program neve
**
Személyes eszközök