Unix kabuğu - Unix shell

Mac OS X Leopard masaüstünde tcsh ve sh kabuk pencereleri

Bir Unix kabuğu , Unix benzeri işletim sistemleri için bir komut satırı kullanıcı arabirimi sağlayan bir komut satırı yorumlayıcısı veya kabuğudur . Kabuk etkileşimli hem komut dili ve komut dosyası dili ve kullanma sisteminin çalışmasını kontrol için işletim sistemi tarafından kullanılan kabuk komut dosyalarını .

Kullanıcılar tipik olarak bir Unix kabuğu ile bir terminal öykünücüsü kullanarak etkileşime girerler ; ancak, sunucu sistemleri için seri donanım bağlantıları veya Secure Shell aracılığıyla doğrudan çalıştırma yaygındır. Tüm Unix kabukları, dosya adı joker karakteri , borulama , burada belgeler , komut ikamesi , koşul testi ve yineleme için değişkenler ve kontrol yapıları sağlar .

konsept

Kabuk teriminin en genel anlamı, kullanıcıların komut yazmak için kullandığı herhangi bir program anlamına gelir. Kabuk, temel alınan işletim sisteminin ayrıntılarını gizler ve çoğu işletim sisteminin en düşük düzeyi veya "en içteki" bileşeni olan işletim sistemi çekirdek arabiriminin teknik ayrıntılarını yönetir .

Unix benzeri işletim sistemlerinde, kullanıcılar genellikle etkileşimli oturumlar için birçok komut satırı yorumlayıcı seçeneğine sahiptir. Bir kullanıcı ne zaman içine kaydeder etkileşimli sistemin, bir kabuk programı otomatik olarak oturum süresince yürütülür. Her kullanıcı için özelleştirilebilen kabuk türü, tipik olarak, örneğin yerel parola dosyasında veya NIS veya LDAP gibi dağıtılmış bir yapılandırma sisteminde , kullanıcının profilinde depolanır ; ancak, kullanıcı herhangi bir kullanılabilir kabuğu etkileşimli olarak çalıştırabilir.

macOS gibi bir pencere sistemine sahip ana bilgisayarlarda , bazı kullanıcılar kabuğu hiçbir zaman doğrudan kullanmayabilir. Unix sistemlerinde, kabuk, tarihsel olarak, bir pencereleme sistemini başlatan, ağ bağlantısını yapılandıran ve diğer birçok temel işlevi içeren program da dahil olmak üzere, sistem başlatma komut dosyalarının uygulama dili olmuştur. Ancak, bazı sistem satıcıları geleneksel kabuk tabanlı başlangıç ​​sistemini ( init ) systemd gibi farklı yaklaşımlarla değiştirmiştir .

Erken kabuklar

İlk Unix kabuğu, Ken Thompson tarafından Bell Laboratuarlarında yazılan ve 1971'den 1975'e kadar Unix'in 1'den 6'ya kadar olan Sürümleri ile dağıtılan Thompson kabuğuydu , sh . Modern standartlara göre ilkel olmasına rağmen, daha sonra herkes için ortak olan birçok temel özelliği tanıttı. Borulama dahil Unix kabukları, ve kullanan basit kontrol yapıları ve dosya adı joker karakterleri. Şu anda kullanımda olmasa da, bazı Antik UNIX sistemlerinin bir parçası olarak hala mevcuttur . ifgoto

1965 yılında Amerikalı yazılım mühendisi Glenda Schroeder tarafından geliştirilen Multics kabuğundan sonra modellenmiştir . Schroeder'in Multics kabuğunun kendisi, Louis Pouzin'in Multics Ekibine gösterdiği RUNCOM programından sonra modellenmiştir . Bazı Unix yapılandırma dosyalarındaki (örneğin, ".vimrc") "rc" soneki, Unix kabuklarının RUNCOM soyunun bir kalıntısıdır.

PWB kabuk veya Mashey kabuk, sh , Thompson kabuğu ile artar bir temelde uyumlu versiyonuydu John Mashey ve diğerleri ile dağıtılmış Programcı Tezgahı UNIX 1975-1977 dolaylarında. Özellikle büyük paylaşımlı bilgi işlem merkezlerinde kabuk programlamayı pratik hale getirmeye odaklandı. Kabuk değişkenleri ( $PATH'e dönüşen arama yolu mekanizması dahil ortam değişkenlerinin öncüleri ), kullanıcı tarafından yürütülebilir kabuk komut dosyaları ve kesme işleme ekledi . Kontrol yapıları if/goto'dan if/then/else/endif, switch/breaksw/endsw ve while/end/break/devam'a genişletildi. Kabuk programlama yaygınlaştıkça, bu harici komutlar performans için kabuğun kendisine dahil edildi.

Ancak erken Unix kabuklarının en yaygın ve etkili olanları Bourne kabuğu ve C kabuğuydu . Her iki kabuk da, genişletilmiş özellik kümelerine sahip birçok türev ve işe benzer kabuk için kodlama tabanı ve modeli olarak kullanılmıştır.

Bourne kabuğu

Bourne kabuğu , sh , yeni bir Unix kabuk oldu Stephen Bourne Bell Laboratuarlarında. 1979'da UNIX Sürüm 7 için kabuk olarak dağıtıldı, burada belgeler , komut ikamesi , daha genel değişkenler ve daha kapsamlı yerleşik kontrol yapıları dahil olmak üzere tüm Unix kabuklarında ortak olduğu düşünülen temel özelliklerin geri kalanını tanıttı . Bir bloğun sonunu işaretlemek için ters çevrilmiş bir anahtar kelimenin kullanımı da dahil olmak üzere dil, ALGOL 68'den etkilenmiştir . Geleneksel olarak, Bourne kabuğu program adı sh'dir ve Unix dosya sistemi hiyerarşisindeki yolu /bin/sh'dir . Ancak, çeşitli iyileştirmeler ve ek özelliklerle birlikte bir dizi uyumlu iş benzeri de mevcuttur. Birçok sistemde, sh bu alternatiflerden birine sembolik bir bağlantı veya sabit bağlantı olabilir:


POSIX standardı sıkı bir alt kümesi olarak standart kabuğunu belirten Korn kabuk , Bourne kabuğunun geliştirilmiş bir versiyonu. Bir kullanıcının bakış açısından, Bourne kabuğu, karakteristik varsayılan komut satırı komut satırı karakteri olan dolar işareti ( $ ) tarafından aktif olduğunda hemen tanındı .

C kabuğu

Cı-kabuk , CSH , kontrol yapıları ve sentezleme dilbilgisi dahil olmak üzere, C programlama dilinde üzerine biçimlendirilmiştir. Bill Joy tarafından California Üniversitesi, Berkeley'de yüksek lisans öğrencisi olarak yazılmıştır ve BSD Unix ile geniş çapta dağıtılmıştır .

C kabuğu ayrıca etkileşimli çalışma için geçmiş ve düzenleme mekanizmaları, takma adlar , dizin yığınları , tilde gösterimi , cdpath , iş denetimi ve yol karma gibi birçok özelliği tanıttı . Çoğu sistemde, csh bir olabilir sembolik bağlantı veya sabit bağlantı için Tenex C kabuğu (tcsh), Joy'un orijinal versiyonunun geliştirilmiş bir sürümü. csh'nin etkileşimli özellikleri diğer kabukların çoğuna kopyalanmış olsa da, dil yapısı geniş çapta kopyalanmamıştır. Tek benzer çalışma , Nicole Hamilton tarafından yazılan ve ilk olarak 1988'de OS/2'de ve 1992'den beri Windows'ta dağıtılan Hamilton C kabuğudur .

Yapılandırma dosyaları

Kabuklar, çeşitli durumlarda yapılandırma dosyalarını okur. Bu dosyalar genellikle kabuk için komutlar içerir ve yüklendiğinde yürütülür; genellikle $PATH gibi yürütülebilir dosyaları bulmak için kullanılan önemli değişkenleri ve kabuğun davranışını ve görünümünü kontrol eden diğerleri ayarlamak için kullanılırlar. Bu bölümdeki tablo, popüler kabuklar için yapılandırma dosyalarını gösterir.

NS ksh csh tcsh bash zsh
/etc/.login giriş yapmak giriş yapmak
/etc/csh.cshrc Evet Evet
/etc/csh.login giriş yapmak giriş yapmak
~/.tcshrc Evet
~/.cshrc Evet Evet
~/etc/ksh.kshrc int.
/etc/sh.shrc int.
$ENV (tipik olarak ~/.kshrc) int. int. int.
~/.login giriş yapmak giriş yapmak
~/.logout giriş yapmak giriş yapmak
/etc/profil giriş yapmak giriş yapmak giriş yapmak giriş yapmak
~/.profil giriş yapmak giriş yapmak giriş yapmak giriş yapmak
~/.bash_profile giriş yapmak
~/.bash_login giriş yapmak
~/.bash_logout giriş yapmak
~/.bashrc int.+n/giriş
/etc/zshenv Evet
/etc/zprofile giriş yapmak
/etc/zshrc int.
/etc/zlogin giriş yapmak
/etc/zlogout giriş yapmak
~/.zshenv Evet
~/.zprofil giriş yapmak
~/.zshrc int.
~/.zlogin giriş yapmak

Açıklama:

  • boş, bir dosyanın bir kabuk tarafından hiç okunmadığı anlamına gelir.
  • "evet", bir dosyanın başlangıçta her zaman bir kabuk tarafından okunduğu anlamına gelir.
  • "login", kabuk bir oturum açma kabuğuysa bir dosyanın okunduğu anlamına gelir.
  • "n/login", kabuk bir oturum açma kabuğu değilse bir dosyanın okunduğu anlamına gelir.
  • "int." kabuk etkileşimli ise bir dosyanın okunduğu anlamına gelir.

Diğer kabuklar

Unix kabuğu kavramının Bourne kabuğundan veya C kabuğundan türetilmeyen varyasyonları aşağıdakileri içerir:

Ayrıca bakınız

Referanslar