exec
genellikle diğer ikili dosyaları başlatmak için sarıcı görevi gören kabuk komut dosyalarında kullanılır. Örneğin:
#!/bin/sh
if stuff;
EXTRA_OPTIONS="-x -y -z"
else
EXTRA_OPTIONS="-a foo"
fi
exec /usr/local/bin/the.real.binary $EXTRA_OPTIONS "$@"
böylece sarmalayıcı çalışmayı bitirdikten sonra, "gerçek" ikili dosya devralır ve artık sarmalayıcı komut dosyasının işlem tablosunda geçici olarak aynı yuvayı işgal eden herhangi bir izi kalmaz. "Gerçek" ikili, bir torun yerine onu başlatan şeyin doğrudan çocuğudur.
Sorunuzda G / Ç yönlendirmesinden de bahsediyorsunuz. Bu oldukça farklı bir kullanım durumudur exec
ve kabuğun başka bir işlemle değiştirilmesi ile ilgisi yoktur. Ne zaman exec
bağımsız değişken yoksa, şöyle:
exec 3>>/tmp/logfile
komut satırındaki G / Ç yönlendirmeleri geçerli kabuk işleminde etkili olur, ancak geçerli kabuk işlemi çalışmaya devam eder ve koddaki bir sonraki komuta geçer.