close

Unix-shell

Ga naar navigatie Ga naar zoeken
Image
Het scherm tijdens een sessie toont Bash , genomen op Gentoo Linux .

Een Unix- shell is de term die in de informatica wordt gebruikt om te verwijzen naar de opdrachtinterpreter van op Unix gebaseerde en vergelijkbare besturingssystemen , zoals GNU/Linux , en die hun traditionele gebruikersinterface is . Door middel van de instructies die door de interpreter worden verstrekt, kan de gebruiker communiceren met de kernel en bij uitbreiding deze opdrachten uitvoeren, evenals tools die hem in staat stellen de werking van de computer te controleren. Om deze reden werd het in het Engels zo genoemd, shell , wat kan worden vertaald als "shell", omdat het de zichtbare shell van het computersysteem is.

De opdrachten die door de interpreters worden geleverd, kunnen als script worden gebruikt als ze zijn geschreven in uitvoerbare bestanden die shell-scripts worden genoemd. executable, de bewerkingen die de interpreter later regel voor regel naar de kernel zal vertalen zodat deze ze kan uitvoeren. Zonder een shellscript strikt een programmeertaal te zijn, wordt het proces van het maken van shellscripts shell-programmering genoemd of in het Engels, shell-programmering of shell-scripting .

In de meest algemene zin van het woord betekent shell elke tolk die gebruikers gebruiken om opdrachten te typen. De etymologie komt van het natuurlijke gebruik van consoles in computers die in het verleden onder Unix draaiden, toen gebruikers verbinding maakten met de centrale computer, deden ze dit via consoles (shells) waarmee ze, via een tolk, inlogden en de hoofdcomputer beheerden. Later, met de verspreiding van personal computers en hun filosofie voor één gebruiker, één computer per gebruiker (begrepen als het tegenovergestelde van de oorspronkelijke filosofie van Unix, één computer, veel gebruikers verbonden door terminals), werd software ontwikkeld die de belangrijkste kenmerken van fysieke consoles, zodat ze nog steeds kunnen worden gebruikt als clients op een computer of kernel die de standaardconventie begrijpt die wordt gebruikt voor het configureren en uitvoeren van noodbeheertaken met op Unix gebaseerde servers.

Unix- en vergelijkbare gebruikers kunnen kiezen tussen verschillende shells (programma dat moet worden uitgevoerd wanneer ze inloggen, zie bash , ash , csh , Zsh , ksh , tcsh ). Grafische gebruikersinterfaces voor Unix, zoals GNOME , KDE en Xfce kunnen visuele shells of grafische shells worden genoemd . Op zichzelf wordt de term shell meestal geassocieerd met de opdrachtregel. Op Unix kan elk programma een gebruikersshell zijn. Gebruikers die een andere syntaxis willen gebruiken voor het samenstellen van opdrachten, kunnen een andere interpreter als hun gebruikersshell specificeren.

De term shell verwijst ook naar een bepaald programma, zoals de Bourne-shell , sh . De Bourne-schaal was de schaal die in vroege versies van Unix werd gebruikt en werd een de facto standaard ; alle Unix-achtige systemen hebben ten minste één shell die compatibel is met de Bourne-shell. Het Bourne shell-programma bevindt zich in de Unix-bestandshiërarchie op /bin/sh . Op sommige systemen, zoals BSD , is /bin/sh een Bourne-shell of equivalent, maar op andere systemen zoals veel Linux-distributies is /bin/sh een symbolische link naar een shell die meer functies ondersteunt (zoals Bash ). POSIX specificeert zijn standaard shell als een strikte subset van de Korn shell .

Shell categorieën

POSIX Shell Command Language.pdf

Ze kunnen worden onderverdeeld in vier categorieën: Bourne-type, C-consoletype, niet-traditioneel en historisch.

shell

  • Bourne shell (sh) - Geschreven door Steve Bourne , toen hij bij Bell Labs was . Het werd voor het eerst gedistribueerd met versie 7 Unix in 1978 en is in de loop der jaren verbeterd.
  • Almquist shell (ash) -- Geschreven als vervanging voor de Bourne-shell met BSD -licentie ; sh van FreeBSD , NetBSD (en zijn afgeleiden) zijn gebaseerd op ash en zijn voor de gelegenheid met POSIX verbeterd.
  • Bourne-Again shell (bash) -- Werd geschreven als onderdeel van het GNU -project om een ​​superset van functionaliteit te bieden met de Bourne-shell.
  • Debian Almquist Shell (dash) -- Dash is een moderne vervanging voor ash in Debian .
  • Korn shell (ksh) -- Geschreven door David Korn , terwijl hij bij Bell Labs was .
  • Z shell (zsh) -- Beschouwd als de meest complete: het komt het dichtst in de buurt van een superset van sh, ash, bash, csh, ksh en tcsh.

shell

exotisch

  • fish , een vriendelijke en interactieve schelp, voor het eerst uitgebracht in 2005.
  • mudsh , een slimme shell in spelstijl die werkt als een MUD .
  • zoidberg, een modulaire shell geschreven in Perl, geconfigureerd en volledig bediend in Perl .
  • rc , de standaard shell voor Plan 9 van Bell Labs en versie 10 van Unix , geschreven door Tom Duff . Er zijn poorten gemaakt voor Inferno en voor op Unix gebaseerde besturingssystemen.
  • is shell (s), een RC-compatibele shell geschreven in het midden van de jaren 90.
  • scsh (Schema Shell)

Configuratiebestanden voor shells

Een shell leest configuratiebestanden in meerdere omstandigheden onder verschillende shell-afhankelijkheden. Deze tabel toont de configuratiebestanden voor de meest populaire shells:

sh ksh csh tcsh bash zsh
/etc/.login Nee Nee Log in Log in Nee Nee
/etc/csh.cshrc Nee Nee Nee Ja Nee Nee
/etc/csh.login Nee Nee Nee Log in Nee Ja
~/.tcshrc Nee Nee Nee Ja Nee Nee
~/.cshrc Nee Nee Ja Ja Nee Nee
~/.login Nee Nee Log in Log in Nee Nee
~/.logout Nee Nee Log in Log in Nee Nee
/etc/profile Log in Log in Nee Nee i.login Nee
~/.profile Log in Log in Nee Nee Log in Nee
~/.bash_profile Log in Nee Nee Nee Log in Nee
~/.bash_login Nee Nee Nee Nee Log in Nee
~/.bashrc Nee Nee Nee Nee Log in Nee
/etc/zshenv Nee Nee Nee Nee Nee Ja
/etc/zprofile Nee Nee Nee Nee Nee Log in
/etc/zshrc Nee Nee Nee Nee Nee int.
/etc/zlogin Nee Nee Nee Nee Nee Log in
/etc/zlogout Nee Nee Nee Nee Nee Log in
~/.zshenv Nee Nee Nee Nee Nee Ja
~/.zprofile Nee Nee Nee Nee Nee Log in
~/.zshrc Nee Nee Nee Nee Nee int.
~/.zlogin Nee Nee Nee Nee Nee Log in
~/.zlogout Nee Nee Nee Nee Nee Log in

Uitleg:

  • "nee" betekent dat de shell het bestand helemaal niet zal lezen.
  • "ja" betekent dat het bestand altijd door de shell wordt gelezen.
  • "login" betekent dat het bestand wordt gelezen als de shell een logging-shell is.
  • "n/login" betekent dat het bestand wordt gelezen als de shell geen sessieshell is.
  • "int." betekent dat een bestand wordt gelezen als het een interactieve shell is.
  • "i.login" betekent dat een bestand wordt gelezen als de shell een interactieve sessie is.

Historisch

  • Thompson shell (sh) -- De eerste Unix shell is geschreven door Ken Thompson van Bell Labs . Gedistribueerd met Unix-versie 1 tot en met 6, van 1971 tot 1975. Het wordt door moderne normen als zeer rudimentair beschouwd en wordt niet gebruikt op huidige systemen. Er zijn enkele delen ervan beschikbaar: Ancient UNIX Systems .
  • PWB-schaal of Mashey-schaal (sh) - Een versie van de Thompson-schaal, gemaakt door John Mashey en anderen bij Bell Labs . Gedistribueerd met de Programmer's Workbench UNIX , in 1976.

Niet-Unix-shells

Binnen de Microsoft Windows -suite van besturingssystemen zijn de analoge programma's command.com of cmd.exe voor op Windows NT gebaseerde besturingssystemen en Windows PowerShell geïntroduceerd met Windows Server 2008 .

Zie ook

Bibliografie

  • Ellie Quigley (2001). "Inleiding tot UNIX-shells". Unix Shells als voorbeeld . Prentice Hall PTR. ISBN  0-13-066538-X .  — Geschiedenis van verschillende shells, het gebruik en de verantwoordelijkheden van een shell in Unix.

Externe links