Shell
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.
Tekintse meg a terminálemulátor cikket néhány általános, a használattal kapcsolatos irányelv megismerése érdekében.
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
Tekintse meg a login cikket, hogy megtudja, hogyan van beállítva a környezet.
Rendszer shell
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.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
A konkrét /bin/sh beállításához használja a /etc/portage/package.use fájlt:
/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
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
- GNU Coreutils — provide many of the basic commands of the UNIX(like) OS.
- Login — logging in to a shell, and setting up the default environment.
- Recommended tools — lists system-administration related tools recommended for use in a shell environment (terminal/console)
- Terminal emulator
- util-linux — contains userspace utilities for Linux-specific system management, including device control, terminal logins, process management, and tty messaging.