Bash Yapısı ve Özellikleri


Kabuk, işletim sistemlerinde kullanıcı ile işletim sistemi çekirdeği arasındaki iletişimi sağlamak üzere hazırlanmış bir arabirimdir. Örneğin, MS-DOS temelli işletim sistemlerinde  command.com sistemin kabuğudur; sisteme hemen her türlü komut command.com programının sağladığı arabirim ile verilir. UNIX sistemlerinde herhangi bir kullanıcının sisteme girişi ile birlikte kullanıcı için atanmış kabuk programının işletimi başlatılır ve kullanıcı sistemde çalıştığı sürece bu kabuk programı vasıtası ile sistem ile haberleşir. Kabuk istediğiniz programları çalıştıran, istemlerini uygun biçimde yönlendiren bir arabirim olarak ifade edilebilir.

UNIX altında kullanabileceğiniz çok sayıda ve farklı kabuk olmasına rağmen Bourne Again Shell (bash), Linux sistemlerde son derece popülerdir. Sistemdeki her kullanıcının kullandığı kabuk farklı olabilir, herkes kendi zevkine ve ihtiyaçlarına uygun olan kabuğu kullanabilmektedir ve UNIX’in bu özelliği önemli bir esneklik sağlamaktadır.

Bir çok Linux dağıtımı ön tanımlı kabuk olarak bash’i kullanmaktadır. Bu kabuk dışında Bourne Shell (sh), C Shell (csh) ve Korn Shell (ksh) gibi farklı kabukları saymak mümkündür. Bir kullanıcının kabuğu genel amaçlı yazılmış bir kabuk programı olabileceği gibi, UNIX üzerinde çalışabilir herhangi bir program da olabilir. Örneğin kolaylıkla /usr/bin/pine yoluna sahip PINE e-posta istemcisini
bir kullanıcı için kabuk olarak tanımlayabilirsiniz.

Bu durumda kullanıcı sisteme girdiğinde yalnız ve yalnız PINE programını kullanabilecek, bu programın sunduğu arabirim ile sistem ile haberleşebilecektir. Kullanıcılar diledikleri anda herhangi bir programı çalıştırırcasına bir genel amaçlı kabuk programını
başlatabilir ve çalışmalarını bu kabuk altında sürdürebilirler. Örneğin  bash kabuğunu kullanan bir kullanıcının, daha rahat edeceğini düşündüğü için kısa süreliğine  csh kabuğuna geçmesi için aşağıdaki komutu yazması yeterli olacaktır:

$ /bin/csh

Geçici süre ile csh kabuğuna geçen kullanıcı işi bittiğinde

% exit

komutunu vererek eski kabuğuna dönebilir. bash kabuğunun yaygınlığını göz önünde bulundurarak, bu kabuk ile ilgili bir takım becerileri ve özellikleri inceleyeceğiz.
Kullanıcının sisteme girişi ile birlikte bash kabuğunun açılış-betikleri (intialization script) işletilir. Bu betikler sırası ile /etc/profile, ~/.bash_profile, ~/.bash_login, ~/.profile dosyaları olacaktır. Sisteme farklı bir kabuk ile giriş yapar ve bash’i daha sonra çalıştırırsanız, okunacak açılış betiği tektir ve
~/.bashrc dosyasıdır. Dosya yollarının parçası olarak görünen ~ simgesi kullanıcı ev dizinlerini simgelemektedir. Bu anlamda
burak kullanıcısının ev dizinine geçmek için

$ cd ~burak

yeterli olabilmektedir. Açılış betiği tabir edilen dosyalar içerisinde bash’in anlayabileceği biçimde yapılmış tanımlar ve komutlar yer almaktadır. Örnek bir ~/.bashrc dosyası içeriği aşağıdaki gibidir:

PATH=$PATH:/home/burak/bin
echo “Selam Burak!”
alias odtuweb lynx http://www.metu.edu.tr

İlk satırda PATH çevre değişkeni ile belirlenen yol arama listesine /home/burak/bin dizini eklenmektedir.Bu sayede bu satırın işletilmesinden sonra /home/burak/bin dizininde yer alan programlar tam yol verilmeden çalıştırılabilecektir. İkinci satırda ise echo komutu ile kısa bir karşılama mesajı görüntülenmektedir. Üçüncü satırda ise lynx programı ile ODTÜ web sitesinin görüntülenmesi için bir kısa yol verilmektedir; bu satırın işletilmesinden sonra odtuweb yazılması bağlantının gerçekleştirilmesi için yeterli olacaktır.

bash kullanımı oldukça kolay bir arabirime sahiptir; alıştıktan sonra çok hızlı bir biçimde çalışabilmenize imkan sağlamaktadır. bash’in bu türden özelliklerinin birisi tamamlama özelliğidir. Bir program adının ilk birkaç harfini girebilir ve TAB tuşuna iki defa ard arda basarak bu harfler ile başlayan çalıştırılabilir programların bir listesini görüntüleyebilirsiniz. Eğer bu harflerle başlayan program yalnızca bir tek ise, doğrudan program adı tamamlanacaktır. Sta ile başlayan programların bir listesi aşağıdaki gibi alınabilir:

$ sta
startkde startx stat statserial

TAB tuşunun kullanımı dosya isimlerinde de aynı şekildedir. Bir komutu girdikten sonra parametre olarak dosya adı gireceğiniz yerde dilediğiniz dosyanın ilk birkaç harfini yazabilir ve gerisini bash’in tamamlamasını sağlayabilirsiniz.

$ ls
butunleme.txt baris.txt ali.txt
$vi but
$vi butunleme.txt

Komutun çıktısını bir dosyaya yazdırmak için > ve >> karakterleri kullanılabilir. Örneğin aşağıdaki örneği çalıştırdığınız dizinde surecler isimli bir dosya oluşturacak ve bu dosyanın içerisine “ps auxw” komutunun çıktısını yazacaktır; ekranda hiçbir çıktı görmeyeceksiniz çünkü bütün çıktıyı dosyaya yönlendirmiş olacaksınız:

$ ps auxw > surecler

Şimdi surecler isimli bir dosyaya sahibiz; bu dosyanın sonuna ekleme yapmak üzere >> karakterinden faydalanırız. Aşağıdaki örnek, surecler dosyasının sonuna bir satır eklemektedir:

$ echo “— BİTTİ —” >> surecler

UNIX felsefesinin önemli bir kısmı, küçük ve işlevleri iyi tanımlanmış programların ardı ardına çalıştırılması yolu ile karmaşık işlemlerin gerçekleştirilebilmesidir. Bu sayede, çok farklı ihtiyaçlara cevap vermek için yazılmış devasa programlara ihtiyaç duyulmamaktadır. UNIX araçlarının büyük bir kısmı oldukça az beceriye sahiptir ve bu nedenle öğrenilmeleri kolaydır. Sistem ile deneyiminiz ilerledikçe farklı programlar hakkında da bilgi edinir, bu programları da daha önce öğrendikleriniz ile farklı kombinasyonlarda çalıştırabilirsiniz.

Bu bağlamda, bir programın ürettiği çıktıyı bir diğerine girdi olarak verebiliyor olmak temel ve önemli bir kavramdır. Bu amacı gerçekleştirmek için | karakterinden faydalanılır. Çalışan görevler listesinden içerisinde “squid” geçenleri bulmak için aşağıdaki gibi bir komut çalıştırılabilir: Bu örneğimizde ps programının çıktısı grep programına girdi olarak verilmektedir.

$ ps aux|grep squid
root 619 0.0 0.0 3308 0 ? SW 2000 0:00 [squid]
squid 622 0.0 18.7 51272 48388 ? S 2000 3:03 (squid) -D
squid 630 0.0 0.1 1480 496 ? S 2000 0:00 (dnsserver)
squid 631 0.0 0.1 1480 420 ? S 2000 0:00 (dnsserver)

Daha sonra kullanmak üzere kabuk içerisinde bazı değişkenler (çevre değişkeni) tanımlayabilirsiniz. Değişken tanımlama için bir örnek aşağıda verilmiştir:

BEN=”Barış Metin”

Böylesi bir tanımdan sonra BEN adında bir çevre değişkeni tanımlanmış olur. Değişkenin kullanımı esnasında önüne $ işareti getirilmelidir:

echo $BEN
Barış Metin

Sisteme giriş yapıldığında bir dizi çevre değişkeni otomatik olarak kabuk tarafından tanımlanır. printenv komutu ile tanımlanmış çevre değişkenlerinin tam bir listesi alınabilir.

$printenv
HOSTNAME=ozgur.beykent.edu.tr
LOGNAME=baris
TERM=vt100
PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/usr/sbin:/home/baris/bin
HOME=/home/baris
SHELL=/bin/bash
USER=baris

Tanımlanan çevre değişkenlerinin, kabuktan çalıştırılacak tüm diğer programlar tarafından da erişilebilir olması için bu değişkenlerin ihraç edilmesi gerekmektedir:

export BEN

Sisteme giriş esnasında tanımlanan çevre değişkenlerinden birisi HOME’dur. Bu değişken kullanıcı ev dizininin yolunu tutar. Diğer bir önemli değişken SHELL’dir; SHELL kullanıcı kabuğunun yolunu tutar.

Reklamlar

Comments are disabled.

%d blogcu bunu beğendi: