Shell

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Shell and the translation is 100% complete.
Other languages:
Resources

A shell (magyarul mondják még "héjnak" is, mert ezen a héjon -rétegen- keresztül lehet kommunikálni a kernellel) egy parancssori értelmező, amely szöveges felületet biztosít a felhasználók számára. Általában egy virtuális konzolon vagy egy terminálemulátoron keresztül érhető el.

A legtöbb shell képes értelmezni a shell szkriptfájlokat. Ezek a szkriptfájlok olyan szöveges fájlok, amelyek előre megírt parancsokat tartalmaznak, és egy adott shellt vagy kompatibilis shellek egy csoportját célozzák meg.

A shellek gyakran távoli számítógépről is elérhetőek, például az SSH szoftver segítségével az SSH protokollon keresztül, vagy soros kapcsolaton keresztül, stb.

Jellemzően a shell az első szoftver, amely elindul, miután a felhasználó bejelentkezik egy virtuális konzolon az operációs rendszerbe vagy amikor megnyit egy terminálemulátort. A /etc/passwd fájl olyan információkat tartalmaz, amely információk meghatározzák az egyes felhasználók számára az operációs rendszeren beállított bejelentkezési shellt.

A felhasználó átválthatja az aktuális munkamenetét bármelyik másik elérhető shellre, egyszerűen az alternatív shell futtatásához szükséges parancs beírásával. Általában lehetőség van a bejelentkezési shell kiválasztására speciális követelmények vagy felhasználói preferenciák esetén (részletek a "felhasználói bejelentkezési shell" részben). Bizonyos terminálemulátorok lehetővé teszik a felhasználó számára, hogy meghatározzák, pontosan melyik shell legyen használva a terminálemulátorban.

A Gentoo operációs rendszerben a /bin/sh fájl egy szimbolikus hivatkozás az alapértelmezett rendszerhéjra, amely beállítható úgy, hogy egy választható POSIX rendszerhéjra hivatkozzon. A Gentoo operációs rendszer alapértelmezett rendszerhéja és felhasználói rendszerhéja a installation után a Bash.

A POSIX és a különböző shell-megvalósítású szkriptekkel kapcsolatban tekintse meg a Shell/Scripting oldalt.

See also
Tekintse meg a terminálemulátor cikket néhány általános, a használattal kapcsolatos irányelv megismerése érdekében.
Note
Szkriptfájl írásakor ügyelni kell arra, hogy a fájl első sorában a megfelelő parancssori értelmező legyen megadva egy shebang használatával. Például egy #!/bin/sh sorral kezdődő szkriptfájlnak csak POSIX konstrukciókat szabad használnia, bash-specifikus kód nélkül.

Parancssori felület

A Unix-szerű parancssori felület (command line interface (CLI), magyarul mondják még parancssornak) egy erőteljes, kiforrott paradigma a modern számítógépekkel való interakció számára. A CLI (tehát a parancssor) számos jelentős előnnyel rendelkezik a grafikus alapú modellekkel szemben, ezért sok szakember számára ez a preferált eszköz a számítógéppel történő kommunikáció során.

A CLI egy szabványosított szöveges felületet biztosít, amelyet általában egy shellen keresztül érnek el, amely egy terminálemulátorban (vagy virtuális konzolon) fut.

A CLI gazdag története még a katódsugárcsöves képernyő-technológiát is megelőzi, és a teleprintereken kezdődött. Ez a hosszú történet egy kifinomult operációs rendszert eredményezett, amely sok jellemzőjét az UNIX operációs rendszerrel együtt fejlesztette ki. Ma a számítógépekbe a szövegbevitel szinte mindig billentyűzettel történik, és a kimenet az esetek többségében a képernyőn jelenik meg.

Bár a tanulási görbe meredekebb lehet, mint a grafikus felhasználói felületek (GUI-k) esetében, a CLI minimális készségek elsajátítása után minden elérhető parancsot közvetlenül a felhasználó keze ügyébe helyez, anélkül hogy menük olvasására és navigálására lenne szükség.

A CLI-ben működő szoftverek általában egyszerű, könnyen megjegyezhető felületeket kínálnak, amelyek opciói kombinálhatók a kívánt funkcionalitás eléréséhez. A CLI általában egy szabványos interfészt követ, amely lehetővé teszi az abban működő szoftverek szoros együttműködését. Továbbá a parancssor lehetőséget biztosít a szoftverekhez tartozó kézikönyvek (súgók) elérésére a man page futtatásán keresztül, illetve gyorsabban és egyszerűbben a --help opcióval is elérhetőek a szoftverekhez tartozó dokumentációk (súgók).

A modern shellek lehetővé teszik olyan hatékony konstrukciók használatát, mint például a csővezetékek, amelyek révén különféle szoftverek zökkenőmentesen együttműködhetnek egymással, valamint a kimenetnek a szűrését és rendezését több CLI segédprogram segítségével.

Néhány parancssorban futtatható segédprogram lehet interaktív, akár azáltal, hogy végrehajtás után alapvető bemenetet kér, akár egy adott parancs al-shelljét megnyitva. A legtöbb segédprogram a parancssorból, szabványos bemenetből, fájlokból, eszközökből vagy hálózatból veszi a bemenetet. Ezután a kimenetet vagy a parancssorba küldi, vagy pedig átirányítja egy fájlba, illetve továbbítja más parancsoknak.

Elérhető szoftverek

A Gentoo operációs rendszer Önnek többféle shellt kínál használatra:

POSIX Shellek

Név Szoftvercsomag Honlap Leírás
ash sys-apps/busybox https://www.busybox.net/ A BusyBox a minimalista Almquist shellt használja.
bash app-shells/bash https://tiswww.case.edu/php/chet/bash/bashtop.html A Bourne Again Shell az alapértelmezett shell a Gentoo operációs rendszeren. Ezt használja a Portage szoftvercsomag-kezelő, amely a Gentoo operációs rendszer alapértelmezett szoftvercsomag-kezelője.
dash app-shells/dash http://gondor.apana.org.au/~herbert/dash/ A Debian Almquist Shell. Egy kis méretű, gyors, posix-kompatibilis shell, amely alkalmas indító szkriptekhez (úgymint a /bin/sh helyettesítője).
dsh app-shells/dsh https://www.netfort.gr.jp/ Egy elosztott shell, amely lehetővé teszi a parancsok párhuzamos végrehajtását sok szerverszámítógép között.
ksh app-shells/ksh http://www.kornshell.com/ Az eredeti Korn Shell, az 1993-as verzió (ksh93).
mksh app-shells/mksh https://www.mirbsd.org/mksh.htm Egy aktívan fejlesztett, ingyenes Korn Shell megvalósítás, amely jól használható szkriptek írásához.
pwsh app-shells/pwsh https://learn.microsoft.com/powershell/ A legtöbb shell azt feltételezi, hogy "minden fájl". A PowerShell egy objektumorientált shell, ahol "minden objektum". Jelenleg MIT-licenc alatt áll, és elérhető Linux alapú operációs rendszerek számára is.
tcsh app-shells/tcsh http://www.tcsh.org/ A Berkeley C Shell (csh) továbbfejlesztett verziója.
yash app-shells/yash https://yash.osdn.jp/ A Yet Another SHell egy POSIX-kompatibilis parancssori shell, amelyet C99 programozási nyelven (ISO/IEC 9899:1999) írtak.
zsh app-shells/zsh http://www.zsh.org/ Egy fejlett shell, amelyet sok felhasználó interaktív shellként választott.

Nem POSIX alapú shellek

Alkalmazáskompatibilitási shellek

Név Szoftvercsomag Honlap Leírás
fish app-shells/fish https://fishshell.com/ A Friendly Interactive SHell.
cmd.exe virtual/wine https://www.winehq.org/ Egy shell, amely a Microsoft Windows végrehajtási környezetét reprodukálja, a Wine részeként.
command.com app-emulation/dosemu http://www.dosemu.org/ Egy shell, amely a MS-DOS végrehajtási környezetét reprodukálja, a DOSEMU részeként.
AmigaShell app-emulation/fs-uae https://fs-uae.net/ Az FS-UAE, egy Amiga emulátor, beállítható úgy, hogy lehetővé tegye a shell hozzáférést a parancssorból. Az ehhez szükséges AmigaOS összetevők nyílt forráskódú megvalósításokkal rendelkeznek az AROS révén.

Bootloader shellek

Név Szoftvercsomag Honlap Leírás
GRUB sys-boot/grub https://www.gnu.org/software/grub/ Egy minimalista, pre-boot mentő-shell.

Firmware shellek

Név Szoftvercsomag Honlap Leírás
Open Firmware https://www.openfirmware.info/ Egy Forth-alapú shell.
UEFI https://uefi.org/ Egy minimalista firmware shell az EFI firmware számára.

További shell lehetőségekért tekintse meg a app-shells szoftvercsomag-kategóriát, vagy a következő parancs kimenetét (eix szükséges):

user $eix -cC app-shells

Beállítás

See also
Tekintse meg a login cikket, hogy megtudja, hogyan van beállítva a környezet.

Rendszer shell

Important
A /bin/sh beállítása bármi másra, mint bash, ritka problémákat okozhat rosszul megírt szkriptekkel, például olyan szkriptekkel, amelyek #!/bin/sh sorral kezdődnek, de bash-specifikus kódot használnak. Résztletek a bug #526268 hibajelentésnél. Biztonságosabb lehet a rendszer-shellt alapértelmezett bash-ként meghagyni, és a felhasználói bejelentkezési shelleket beállítani felhasználók létrehozásakor. Illetve biztonságosabb lehet a chsh parancs használata a meglévő felhasználók esetében – Részletek a következő szakaszban.
Note
Ez normális, hogy ezzel a módszerrel csak néhány POSIX-kompatibilis shell lesz elérhető. Tekintse meg a következő szakaszt, amely bemutatja a felhasználói bejelentkezési shellek beállítását, így több shellt lehet alapértelmezettként beállítani. Figyeljen az előző figyelmeztetésre is, és fontolja meg inkább a következő szakaszban ismertetett módszer használatát bármely shell alapértelmezettként való beállításához.

A "rendszer-shell" akkor kerül végrehajtásra, amikor azt a /bin/sh-ból futtatják, például olyan szkriptek esetében, amelyek #! /bin/sh sorral kezdődnek. A "rendszer-shell" módosítása nem változtatja meg, hogy a felhasználók milyen shellbe jelentkeznek be, és nem változtatja meg az új felhasználók számára beállított shellt sem.

A rendszergazdák a app-alternatives/sh szoftvercsomag USE jelölőzászlóinak segítségével módosíthatják a rendszer-shellt. Ez a szoftver a rendszer-shellt úgy változtatja meg, hogy a /bin/sh fájlt egy másik POSIX-kompatibilis shellre mutató szimbolikus linkkel helyettesíti.

USE flags for app-alternatives/sh /bin/sh (POSIX shell) symlink

+bash Symlink to app-shells/bash
busybox Symlink to sys-apps/busybox
dash Symlink to app-shells/dash
ksh Symlink to app-shells/ksh
lksh Symlink to lksh from app-shells/mksh
mksh Symlink to mksh from app-shells/mksh

A konkrét /bin/sh beállításához használja a /etc/portage/package.use fájlt:

FILE /etc/portage/package.use
# Készítsen egy szimbolikus hivatkozást a "/bin/sh" számára a "dash" shellre az "app-shells/dash" szoftvercsomagból.
app-alternatives/sh -bash dash

Felhasználó bejelentkezési shell-je

Important
Néhány shell, például a fish, problémákat okozhat, ha közvetlenül beállítják bejelentkezési shell-ként. Lásd a a fish cikk figyelmeztetések szakaszát annak biztonságos alapértelmezett shell-ként való beállításához.

A bejelentkezési shell beállításai a /etc/passwd fájlban vannak tárolva.

Felhasználó létrehozása egy adott bejelentkezési shell segítségével

A bejelentkezési shell beállítható egy új felhasználó létrehozásakor a useradd parancs segítségével (a sys-apps/shadow szoftvercsomagból).

A felhasználó létrehozásához és a bejelentkezési shell meghatározásához a következő parancs használható:

user $useradd -s /bin/ksh -m orbanviktor

Az -s opció megadja a shell elérési útját, míg az -m opció utasítja a useradd parancsot, hogy létrehozza az új felhasználó saját könyvtárát, amennyiben az még nem létezik.

Meglévő felhasználó bejelentkezési shelljének a beállítása

Egy már létező felhasználó bejelentkezési shellje megváltoztatható a chsh parancs segítségével. A jelenlegi felhasználó bejelentkezési shelljének módosításához írja be a chsh parancsot, majd adja meg az új shell elérési útját. Az alábbi példában korunk és országunk zseniálisan nagyszerű, méltó és igazságos embere, orbanviktor felhasználó módosítja a bejelentkezési shelljét /bin/ksh shellről /bin/zsh shellre.

user $chsh
Changing the login shell for orbanviktor
Enter the new value, or press ENTER for the default
	Login Shell [/bin/ksh]: /bin/zsh

A chsh parancs segítségével bármely felhasználó bejelentkezési shellje módosítható a rendszergazdai (root) fiókból.

A chsh parancs csak a /etc/shells fájlban felsorolt shell-eket engedélyezi.

Hibaelhárítás

Torz kijelző

A shell kimenete bizonyos körülmények között sérülhet. Tekintse meg a terminálemulátor cikket az erre vonatkozó javítási útmutatókért.

További olvasnivaló a témában