exec Komut, belirlenen komutu ile geçerli kabuk işlemi yerine geçer. Normalde, bir komutu çalıştırdığınızda yeni bir süreç ortaya çıkar (çatallanır). exec Komut yeni bir süreç yumurtlamaya etmez. Bunun yerine, geçerli işlem yeni komutla kaplanır. Başka bir deyişle, execkomut yeni bir işlem oluşturmadan geçerli kabuk yerine yürütülür.
Exec komutunun en yaygın üç kullanımı vardır:
1. Sürecin değiştirilmesi
Örnek-1:
Yeni birbashkabukaçarsanız
$ bash
içinde pstreebenziyor
├─gnome-terminali
├─bash───bash───pstree
Önceki bashmermi hala orada ve yeni bir bashmermi var. Halbuki yeni bir bash kabuğu açarsanız,
$ exec bash
pstreegösterileri
├─gnome-terminali
├─bash───pstree
Burada eskisinin bashyerine yenisi gelir. Tek bir komutta çoklu girişten çıkmak özellikle yararlıdır. Daha güvenlidir ve yanlışlıkla açık bir terminalden ayrılma şansını ortadan kaldırır. Bkz. Tek komutla hem kökten hem de kullanıcıdan çıkma
Örnek-2: Bir dosyayı şu şekilde açabilirsiniz :
$ exec vi filename.txt
Çıktığınızda vi, kabuk zaten değiştirildiği için terminali ayrı olarak kapatmaya gerek yoktur. Vi'yi kapatır kapatmaz terminal de kapanır.
2. Kabuk komut dosyalarındaki dosya tanımlayıcılarını yeniden yönlendirme yöntemi
exec Komut ayrıca yakın, kabuk komut dinamik olarak açık kullanılabilir ve dosya tanımlayıcıları kopya edilebilir. Bu, STDIN, STDERR, STDOUT ve diğer dosya tanımlayıcılarının komut çağırma dizesi yerine kabuk betiğinin içindeki çeşitli dosyalara yeniden yönlendirilmesini sağlar. Bir komut veya bağımsız değişken belirtmezseniz, bu işlevleri gerçekleştirmek için yeniden yönlendirme simgeleri ve dosya tanımlayıcıları belirtebilirsiniz.
Eğer bir kabuk olduğunu varsayalım script.shEğer bir günlük dosyası olmasını istiyorsanız script.log, kullanabileceğiniz execgibi
LOG=/path/to/script.log
exec 1>>$LOG
exec 2>&1
eşdeğer
./script &>> /path/to/script.log
./script >> /path/to/script.log 2>&1
3. exec komutunu kullanarak sürecin aşamalarını oluşturma
Ayrıca, işlemin aşamaları gibi sırayla birbirini yürüten bir dizi kabuk komut dosyası oluşturmak için exec komutunu da kullanabilirsiniz. Her seferinde denetimi bir sonraki komut dosyasına aktarmanız gerektiğinde yeni işlemler oluşturmak yerine exec komutunu çalıştırırsınız.
Bu durumda, her aşamanın son ifadesi exec, bir sonraki aşamayı çağıran komut olmalıdır .
Daha fazla bilgi için kabuk komut dosyalarında komutun kullanımlarınaexec bakın .
Not: Yukarıdakilerin bir kısmı bundan alınır .