Debian ve Ubuntu birkaç şey yüzünden kısa çizgiye (iirc) geçti. Her şeyden önce, Bash yıllar içinde büyük olmuştur. Aslında, /bin/bash
Ubuntu 8.04 sistemimdeki ikili, neredeyse on kat (!) Kadar büyük /bin/dash
. Şimdi, bu günlük kullanım için çok önemli değil, ancak aşağıdaki durumlarda önemlidir:
- Çizgi çok daha küçüktür ve bu nedenle daha hızlı yüklenir, bu da init betikleri için bir nimettir. Bunların çoğuna başlamanız gerekiyorsa, her seferinde Bash yerine Dash yüklemek, işleri önemli ölçüde hızlandırır.
- Dash'in daha küçük olması nedeniyle, Debian ve Ubuntu, başka şeylere daha fazla yer bırakarak (ve diğer şeyleri hızlandırarak) kendi büyüklüklerinin büyük bir kısmını tıraş edebiliyorlar.
Komut dosyası yazmak için Bash yerine Dash kullanmanın olumsuz yanı, birçok insanın Bashash denilen, yalnızca Bash'in sahip olduğu sözdizimsel kükürleri kullanmasıdır . Bashism'lerin örnekleri şöyledir:
echo $SHELL
/bin/bash
a=1234567890
echo ${a}
1234567890
echo ${a:3}
4567890
echo ${a:3:1}
4
Ve bu:
echo ${a#123}
4567890
Dash, diğer yandan esas olarak POSIX uyumlu (ve bundan daha fazlası değil) olmayı hedefliyorsa, şunu denerseniz size Kötü bir alt işleme hatası verir:
echo $SHELL
/bin/dash
# actually, it will read /bin/bash above, because if you just run dash
# it will not set the $SHELL variable :)
a=1234567890
echo ${a}
1234567890
echo ${a:3}
dash: Bad substitution
Bu, sizin betik betikleriniz için tercüman olarak kullanmanız /bin/sh
(ve dolayısıyla dash
) ve içlerinde Bashizmalar kullanmanızın önemi olacaktır. Debian ve Ubuntu, Asismiler ve genel olarak shellscriptlerde neden kötü olduklarını ve özellikle de init-scripts ile ilgili güzel wiki sayfalarına sahipler. Bu nedenle, bilinçli olarak ihtiyacınız olup olmadığını /bin/sh
veya /bin/bash
betiğiniz için tercüman olarak seçmelisiniz .
Dash, sistemlerinizde varsayılan kabuk olarak kullanılmamalıdır. Bunun için sadece Bash'i kullanın. Komut dosyalarınızın taşınabilirliği için, komut dosyalarının diğer Linux lezzetleri ve Unix'lerde yayınlanma olasılığını artırmak için Dash'i tercüman olarak kullanabilirsiniz.