Bildiğim kadarıyla bkz gibi exec 3>&-
ve exec 3<&-
ne olursa olsun o açıldığı nasıl, aynı ve herhangi bir dosya tanımlayıcı üzerinde kullanılabilir. Shell Komut Dilinin POSIX tanımının 2.7.6 ve 2.7.5 bölümlerine göre :
2.7.5 Bir Giriş Dosyası Tanımlayıcısının Çoğaltılması
Yönlendirme operatörü:
[N] <& kelime
[... SNIP ...]
Sözcük '-' olarak değerlendirilirse, dosya tanımlayıcısı n veya n belirtilmezse standart girdi kapatılır. Açık olmayan bir dosya tanımlayıcısını kapatma girişimleri bir hata oluşturmayacaktır. Eğer kelime başka bir şeye değerlendirirse, davranış belirtilmez.
2.7.6 Bir Çıktı Dosya Tanımlayıcısının Çoğaltılması
Yönlendirme operatörü:
[N]> ve kelime
[... SNIP ...]
Sözcük '-' olarak değerlendirilirse, dosya tanımlayıcısı n veya n belirtilmezse standart çıktı kapatılır. Açık olmayan bir dosya tanımlayıcısını kapatma girişimleri bir hata oluşturmayacaktır. Eğer kelime başka bir şeye değerlendirirse, davranış belirtilmez.
Unutmayın ki, dosya tanıtıcısının n orijinal olarak nasıl açıldığı hakkında hiçbir şey belirtmediğine dikkat edin. Bu, close (2) dosyasının dosyayı nasıl açtığınızla ilgilenmediği gerçeğiyle aynı doğrultudadır .
Aşağıdakilerin hızlı bir şekilde engellenmesi:
exec 3< /etc/passwd
exec 4> foo
exec 3<&-
exec 4<&-
Buna karşı:
exec 3< /etc/passwd
exec 4> foo
exec 3<&-
exec 4>&-
Her iki durumda da Bash'in aynı şeyi yaptığını gösteriyor.
İki Hafif İlginç Gerçek
>&-
ve<&-
(belirtilmemiş varsayılan fd olduğu>&-
olduğu1>&-
süre<&-
almaktadır0<&-
). Aynıx>&y
olan,x<&y
ne zamanx
sağlanmadığı hariç aynıdır .