03 - Komut Satırı + Kernel + Shell

Komut Satırı

Öğrenmemiz gereken ilk kavram Linux Komut Satırı diğer bir adıyla Linux Terminali (konsol) olacaktır. (Windows tarafında olan karşılığının adı powershell) Ancak bundan önce Linux işletim sisteminin(GNU/Linux) çekirdeğini ele almalıyız. Linux çekirdeği Linux'un kalbi kabul edilir. En önemli ana görevinin tanımı kısaca; yazılımla donanımın haberleşmesini sağlamaktır. Ayrıca Linux'un yani çekirdeğin ingilizce karşılığı "kernel"dir.

LinuxkernelChartKernel

Biz ister grafiksel arayüzü kullanalım, istersek de yalnızca komut satırını kullanacak olalım; örneğin bir dosyayı bir yerden başka bir yere taşırken; ister sürükle bırak yöntemiyle(grafiksel arayüz kullanarak) taşıyalım, istersek de bu işi komut satırından komutlar yardımı ile gerçekleştirelim; neticede yapılan işlem aslında arka tarafta komutların yorumlanarak çalıştırılması ile gerçekleşmektedir.

İşte tüm bu işlemleri gerçekleştirmekle görevli bazı yapılar vardır. Çekirdek(kernel) de kullanıcıdan gelen girdilerle birlikte sistemin işleyebilmesi (process) için donanıma iş yaptırmakla görevlidir. Ancak direk olarak kullanıcıdan alınan komutlar Kernel'e geçmez. Bundan önce komut satırı dediğimiz bir kabuk(shell) programını temel alarak çalışan yapı, kullanıcı ile çekirdek arasında aracı bir katman görevi görür.

Shell(kabuk) programını açıklayacak olursak:

Shell

Mantığını oturtmanız ve kavramların daha kolay yerleşmesi açısından bir fıstık düşünün. Bu fıstığın dış katmanı Kabuk (Shell) iç kısmı ise Çekirdek (Kernel) olacaktır.

Bu benzetme sayesinde isimlerin de nereden geldiği az çok açıklığa kavuşmuş oldu. Shell'in görevi bir üst kısımda belirttiğimiz gibi kullanıcı ile kernel arasında aracı bir katman olarak kullanıcıdan gelen girdileri kernele uygun şekilde iletmektir. Sistemde yapmak istediklerimiz ve yapabileceklerimiz Shell'in esnek ve kullanışlı yapısına yani yeteneklerine bağlı olarak değişmektedir. Bu bağlamda Shell'in sisteme hükmetmekteki anahtarlardan olduğunu söyleyebiliriz. Shell hakkındaki biraz önceki açıklamalara("yeteneklerine bağlı olarak değişmektedir") bakarak birden fazla Shell programının olduğunu tahmin etmiş olabilirsiniz. Tebrik ederim çok doğru, Linux sistemlerinde BASH dışında (ksh,tcsh,zsh,fish...) gibi birçok Shell (kabuk) programı mevcuttur. Ancak yetenekleri dolayısıyla olsa gerek en çok tercih edilen kabuk programı BASH kabuk programıdır.

İnanmıyorsanız bir test edelim sizin sisteminizde hangi kabuk programı kullanılıyor.

Bunun için konsolunuzu açın ve aşağıdaki komutu girin diyecektim ki... "Hayda.. daha konsol nedir açıklamadın ki !" diyeceksiniz, haklısınız temeli oturtmak adına buralara kadar geldik ama direk konsol şudur demedik. Ancak zaten bu kısıma kadar Konsol'un ne olduğunu dolaylı olarak da olsa açıklamış olduk.

Konsol, kullanıcı ile Shell arasından yer alarak kullanıcının komut girmesini sağlayan grafiksel ve komut satırı arayüzüne sahip bir araçtır. Biz komutlarımızı bu araç aracılığı ile Shell'e ulaştırırız Shell ise kullanıcıdan gelen girdileri yorumlayarak Kernel'e aktarır.

Aşağıdaki basit diyagrama bakarak bu yapıları daha net kavrayabilirsiniz.

Shell Kernelshell turleri

Konsol Ekranı Açmak (Terminal/Komut Satırı)Terminal

Aynı anda birden fazla konsol ekranı da kullanabiliyoruz. Örenğin aynı anda 6 ayrı konsol açıp hepsinde ayrı işlem yapabiliriz. Grafiksel arayüzden komut satırına geçmek için Crtl + Alt + (f1, f2, f3, f4, f5, f6) tuş kombinasyonlarını kullanabiliriz. Demiştim ya 6 farklı konsol açılabiliyor işte açtığınız konsolun numarası da tty1, tty2, tty3, tty4, tty5, tty6 gibi "tty_konsol_numarası" şeklinde konsolda görülüyor. Örneğin ben Ctrl + Alt + f3 tuş kombinasyonunu uyguladığımda karşıma aşağıdakine benzer bir komut satırı geliyor ve benden login olmamı yani kullanıcı adımı ve sonrasında şifremi yazarak giriş yapmamı bekliyor.

Eğer bu komut satırından çıkıp tekrar kullanıcı arayüzüne yani grafiksel arayüze geçmek isterseniz Ctrl + Alt + (f7, f8, f9, f10, f11, f12) tuş kombinasyonlarından herhangi birini kullanarak bunu başarabilirsiniz. Ancak kimi Kali Linux sürümlerinde durum böyle olamayabiliyor yani eğer Ctrl + Alt + f7 ve sonrası tuş kombinasyonu grafik arayüze dönmenizi sağlamaz ise bu sefer Ctrl + Alt + f1 veya Ctrl + Alt + f2 şeklinde dönmeye çalışın. Grafik arayüzden Terminal(konsol) ile çalışmak isterseniz; masaüstünde bulunan Terminal simgesine tıklamanız yeterli olacaktır.(Genelde görev çubuğunda sabit şekilde yer alır.) Eğer masaüstünde yok bulamıyorum diyorsanız arama çubuğu ve benzeri yardımcılar aracılığı ile lütfen "konsol" veya "terminal" şeklinde aratarak kendiniz bulun. Konsol(terminal) açma işlemi hemen aşağıda gif resmi ile gösterilmiştir.

Kali varsayılan olarak zsh kabuğu ile gelir bunu bash kabuğuna çevirmek için aşağıdaki işlemleri yapabilirsiniz.

Aşağıdaki komut ile mevcut kullandığınız kabuğu görebilirsiniz

 echo $SHELL

 zsh kabuğundan bash kabuğuna geçmek için aşağıdaki komutu çalıştırın ve sonra oturumu kapatıp açın.

sudo chsh -s /bin/bash $USER

geri almak için

sudo chsh -s /bin/zsh $USER