Shell (Kabuk) Nedir: Klavye yardımıyla kendisine verilen komutları, uygulaması için işletim sistemine veren bir programdır. İlk Linux gibi Unix-like sistemlerde tek kullanıcı arayüzüydü. Sonrasında Shell gibi Command Line Interface (CLI) yanında Graphical User Interface(GUI) ler de kullanılmaya başlandı.
Çoğu Linux sisteminde Bash(Born Again Shell) olarak adlandırılan Shell türü ise orjinal Unix Shell inin, Steve Bourne tarafından geliştirilmiş versiyonudur. Bunun yanında zaman içinde ksh, tsch, zsh gibi birçok shell türü kullanılmaya başlandı.
Teleprinter(teletypewriter, teletype veya TTY) denilen cihaz, bir çok iletişim kanalı ile haberleşmeye yarayan elektromekanik bir cihaz. Bu cihazlar sonrasında bilgisayarlar için kullanıcı arayüzü olarak kullanılmış.
Yani terminal dediğimiz şey basitçe çalıştırıldığında ilk yaptığı şey bir shell programını çalıştırmak olan bir arayüz programı. Bunu görmek için pstree komutunu işleterek process ağacını görebiliriz.
pstree -psa $$
Ufak farklılıklar olsa da şöyle bir çıktı alırsınız:
Sistemin ana proseslerinden sonra qterminal -> zsh -> pstree şeklinde devam ettiğini görebiliriz. Burda terminal türünüz qterminal den farklı, shell için zsh değilde farklı bir tür görebilirsiniz. Buradaki $$ ile ulaştığımız paramatre shell e ait iç parametrelerden.Çağırdığımız script in kendisinin Process ID(PID) değerini veriyor.
Sistem üzerindeki shell türlerini görmek için
cat /etc/shells
yazmanız yeter. Şu anda hangisini kullandığınızı öğrenmek içinse şu komutları deneyebilirsiniz:
echo $0
veya
ps -ef | grep $$ | grep -v grep
veya
echo $SHELL
Bu komutların detayları için man sayfalarına bakılabilir.
Sytem Console, Virtual Terminal(VT) veya Virtual Console(VC) , Terminal Emulator gibi konuları atlıyorum. Detayları için bu anahtar kelimleri kullanarak araştırma yapabilirsiniz. Sadece yukarda bahsettiğimiz tty kısaltmasına gönderme yaparak, Virtual Console ların , Unix-Like sistemlerin sistemdeki cihazlara erişiminin sıradan bir dosya gibi olmasını sağlayan yapıyı hatırlatıp, /dev/tty1, /dev/tty2 gibi temsil edildiklerini söyleyebilirim. /dev altına bakarsanız orada bunların yanında /dev/console gibi veya Virtual Console Screen, ve Virtual Console Screen With Attributes için /dev/vcs1 ve /dev/vcsa1 gibi başkalarını da görebilirsiniz.
Shell ve çokca kullanılabilecek komutlar:
Komutları incelemeden önce 4 tip Shell komutu olduğundan bahsedebiliriz.
1. Bu komuta karşılık gelen çalıştırılabilir bir
program. C,C++, python,ruby gibi dillerle veya Shell betikleri olarak
yazımış herhangi bir program.
2. Shell programının bizzat kendi içinde(built-in, yerleşik) olan
komutlar.
3. Tanımlanmış Shell fonksiyonları
4. Takma adlar(alias)
Burda şundan da bahsedebiliriz: Bir Shell komutunu terminale girdiğimizde, bu 4 türden hangisi olduğunu ve bu komuta karşılık gelen programların veya fonskiyonların nerde olduklarını Shell programı nasıl bilir ?
Bu serinin ikinci kısmında buradan devam edelim...
Kaynaklar:
0.https://www.linuxfromscratch.org/
2.https://docstore.mik.ua/orelly/unix/upt/ch01_02.htm
3.https://dwmkerr.com/effective-shell-part-5-understanding-the-shell
4.https://searchnetworking.techtarget.com/definition/terminal
5.https://en.wikipedia.org/wiki/Teleprinter
6.https://en.wikipedia.org/wiki/System_console
7.https://en.wikipedia.org/wiki/Virtual_console
8.http://blog.btrisk.com/2017/03/kali-linux-servis-yonetimi.html
Yorumlar
Yorum Gönder