Dizilerin POSIX'e dahil edilmesi POSIX standardının bozulmasına neden olur mu?
Bash ve ksh93'te dizileri kullanma yeteneği, birden çok diziden öğelere hızlı bir şekilde erişme ihtiyacı doğduğunda çok kullanışlıdır. İşte hızlı bir örnek:
#!/bin/ksh93 --
array1=(1 2 3 4 5 6 7)
array2=(8 9 10 11 12 13 14)
printf '%s\n' "Third element of array1 is ${array1[2]} and fifth element of array2 is ${array2[4]}"
Dizilerin POSIX standardına dahil edilmemesinin nedenlerinden en azından bir kısmının, böyle yapmanın işleri bozacağını okuduğumu hatırlıyorum. Bu doğru mu? Ne şeyler bozulur?
Yanıtlar
Ne bahsettiğin şey metin bilmiyorum ama bu durum böyle değil oldukça emin değilim, çünkü bash
ve ksh93
POSIX uyumlu olması gerekiyordu ve diziler yapsam POSIX kabukları kırmak için neden daha sonra bu kabukları uyumlu olmaz .
Ancak bu, POSIX'in bunları içereceği anlamına gelmez. Birincisi bash
ve ksh93
dizileri aynı şekilde uygulayamayabilir ve POSIX geniş çapta konuşlandırılmış tarihsel uygulamalarda farklı davranan bir özelliği belirtmek istemeyecektir.
İkincisi, POSIX genellikle çok fazla özellik belirtmez. Ancak şimdi, local
hemen hemen her açık kaynak POSIX kabuğunda yaygın olarak kullanılan, talep edilecek bir teklif bile var ksh93
. Benzer şekilde, vi
yalnızca POSIX özelliklerini uygulayan bir uygulama kullanmak da mümkün olabilir , ancak çoğu kullanıcı bunu özelliklerde oldukça seyrek bulacaktır.
Son olarak, POSIX çoğu uygulamada zaten mevcut olan şeyleri standartlaştırmayı tercih eder ve kabuk dizileri böyle bir şey değildir. dash
soyunu paylaştığı kabukların çoğunun yanı sıra busybox
. Eksiksiz bir POSIX ortamı nispeten küçük olabilir ve bu, gömülü sistemlerle çalışması gereken kişiler için çok uygundur, bu nedenle kolaylık lehine genellikle hoş şeyler atlanır.
Ayrıca, yaygın olarak kullanılan açık kaynak uygulamasının bir özelliğe sahip olmasının ticari Unix ortamlarının olacağı anlamına gelmediğini de unutmayın. POSIX dizileri yeni bir sürümde belirtecek olsa bile, tüm bu sistemlerin onları destekleyecek şekilde güncellenmesi uzun yıllar alacaktı.