Unix kabuğu - Unix shell
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 .
if
goto
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:
-
Almquist kabuğu (kül): Bourne Kabuğu için BSD lisanslı bir yedek olarak yazılmıştır; genellikle kaynak kısıtlı ortamlarda kullanılır. FreeBSD , NetBSD (ve türevlerinin) sh değeri , POSIX uyumlu olacak şekilde geliştirilmiş küle dayanmaktadır .
- Busybox : küçük ve gömülü sistemler için 2 kabuk içeren bir dizi Unix yardımcı programı: Almquist kabuğunun bir türevi olan kül; ve sus, bir Bourne kabuğunun bağımsız bir uygulaması.
- Debian Almquist kabuğu (tire): Debian ve Ubuntu'da kül için modern bir yedek
- Bourne-Again kabuğu (bash): Bourne Shell işlevselliğinin bir üst kümesini sağlamak için GNU Projesinin bir parçası olarak yazılmıştır . Bu kabuk kurulu olarak bulunabilir ve çoğu Linux sistemindeki kullanıcılar için varsayılan etkileşimli kabuktur .
- KornShell (ksh): Bell Laboratuarlarında çalışırken Bourne kabuğu kaynaklarına dayanarak David Korn tarafından yazılmıştır.
-
Kamu malı Korn kabuğu (pdksh)
- MirBSD Korn kabuğu (mksh): MirOS BSD'nin bir parçası olarak geliştirilen OpenBSD /bin/ksh ve pdksh'nin soyundan gelir
- Z kabuğu (zsh): bash ile geriye dönük uyumlu olan nispeten modern bir kabuk . Varsayılan içinde kabuk var Kali Linux 2020.4 beri ve MacOS 10.15 beri Catalina .
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:
- es – 1990'ların ortalarında yazılmış, işlevsel bir programlama rc uyumlu kabuk.
- Dostu etkileşimli kabuk (balık) – İlk olarak 2005'te piyasaya sürüldü.
- PowerShell – Orijinal olarak Windows işletim sistemi için geliştirilmiş ve şimdi macOS ve Linux için kullanılabilen nesne yönelimli bir kabuk.
- Qshell – IBM i işletim sistemi üzerinde POSIX ve X/Open standartlarına dayalı bir kabuk .
- rc – Bell Labs'den Plan 9'daki varsayılan kabuk ve Tom Duff tarafından yazılmış Sürüm 10 Unix . Çeşitli Unix benzeri işletim sistemlerine bağlantı noktaları yapılmıştır .
- scsh - Bir Şema Kabuk.
- dilek – Tcl/Tk için bir pencereleme kabuğu .