BusyBox , / bin dizinlerinde dolaşmaya başladığınızda oldukça kafa karıştırıcı olabilecek oldukça yeni bir şekilde tasarlanmıştır.
Olarak MSalters belirtilen BusyBox sadece bir komuttur. Ancak bu, içindeki her "komut" için bu yürütülebilir dosya için oluşturulmuş sembolik bir bağlantıya bağlıdır. Başladığı sembolik bağlantı adını bilerek, bu komut için C işlevini çalıştırmayı bilir.
Böylece, PuppyLinux 5.2.8 Lucid / bin dizininin başlangıcına benziyor ...
sh-4.1# ls -l
total 4889
lrwxrwxrwx 1 root root 7 2011-08-17 10:49 [ -> busybox
lrwxrwxrwx 1 root root 7 2011-08-17 10:49 [[ -> busybox
lrwxrwxrwx 1 root root 7 2011-08-17 10:49 addgroup -> busybox
lrwxrwxrwx 1 root root 7 2011-08-17 10:49 adduser -> busybox
lrwxrwxrwx 1 root root 7 2011-08-17 10:49 ash -> busybox
-rwxr-xr-x 1 root root 2844 2011-08-17 11:04 autologinroot
lrwxrwxrwx 1 root root 4 2011-08-17 10:49 awk -> gawk
lrwxrwxrwx 1 root root 7 2011-08-17 10:49 basename -> busybox
-rwxr-xr-x 1 root root 805960 2011-08-17 11:04 bash
-r-xr-xr-x 1 root root 6835 2011-01-21 01:29 bashbug
lrwxrwxrwx 1 root root 7 2011-08-17 10:49 bbconfig -> busybox
-rwxr-xr-x 1 root root 30200 2011-08-17 11:04 bunzip2
lrwxrwxrwx 1 root root 7 2011-08-17 10:49 bunzip2-BB-NOTUSED -> busybox
-rwxr-xr-x 1 root root 637960 2011-08-17 11:04 busybox
-rwxr-xr-x 1 root root 30200 2011-08-17 11:04 bzcat
lrwxrwxrwx 1 root root 7 2011-08-17 10:49 bzcat-BB-NOTUSED -> busybox
Çoğu komutun sembolik bağlantı olduğuna dikkat edin busybox
. Bu, ash
çoğunlukla önyükleme işlemleri sırasında kullanılan çok minimalist kabuğu içerir . Ayrıca dağıtım yazar bağımsız komutları içerir seçti unutmayın bunzip2
ve bzcat
bunun yerine busybox sürümlerini kullanmak. İşaretler bunzip-BB-NOTUSED
ve bzcat-BB-NOTUSED
gerçekten gerekli değiller, ancak bir sembolik bağlantının maliyeti için neler olup bittiğini belgelemeye yardımcı olurlar.
Ayrıca , bağlantının kendisi yerine sembolik bağların hedefi ( ls -lL
veya ls -l --dereference
) için boyutlar bildiren bir dizin listesinin , her komutun boyutuyla aynı olduğunu bildireceğini unutmayın busybox
. Böylece -L
seçeneği ile aynı liste gösterir ...
sh-4.1# ls -lL
total 60402
-rwxr-xr-x 1 root root 637960 2011-08-17 11:04 [
-rwxr-xr-x 1 root root 637960 2011-08-17 11:04 [[
-rwxr-xr-x 1 root root 637960 2011-08-17 11:04 addgroup
-rwxr-xr-x 1 root root 637960 2011-08-17 11:04 adduser
-rwxr-xr-x 1 root root 637960 2011-08-17 11:04 ash
-rwxr-xr-x 1 root root 2844 2011-08-17 11:04 autologinroot
-rwxr-xr-x 1 root root 317880 2011-08-17 11:04 awk
-rwxr-xr-x 1 root root 637960 2011-08-17 11:04 basename
-rwxr-xr-x 1 root root 805960 2011-08-17 11:04 bash
-r-xr-xr-x 1 root root 6835 2011-01-21 01:29 bashbug
-rwxr-xr-x 1 root root 637960 2011-08-17 11:04 bbconfig
-rwxr-xr-x 1 root root 30200 2011-08-17 11:04 bunzip2
-rwxr-xr-x 1 root root 637960 2011-08-17 11:04 bunzip2-BB-NOTUSED
-rwxr-xr-x 1 root root 637960 2011-08-17 11:04 busybox
-rwxr-xr-x 1 root root 30200 2011-08-17 11:04 bzcat
-rwxr-xr-x 1 root root 637960 2011-08-17 11:04 bzcat-BB-NOTUSED
BusyBox'un amacı, ortak bir komut dizisi için gereken bellek ve disk alanını (yani "ayak izi") en aza indirgemek için kendi içinde bir kodun yeniden kullanılmasıdır ... bir kabuk kendisi gerektirmeden.
Bash ve diğer kabukları aynı şeyi başarır. Ancak bunu yapmak için kendi komut satırı ortamlarını uygularlar. Bu amaç aynı zamanda birçok kabuk işlevsellik için çok eski sözdiziminin nedenlerinden biridir.
Şu anda Bash işlevlerinin bir kütüphanesi için bu "BusyBox tekniğini" kullanıyorum ve çeşitli temel bilgiler için sarmalayıcıları kullanmak daha kolay . --help
Seçenekler ile kolayca komutları "genişletme" ve kullanılabilir olduğunda GUI sürümlerini ateşlememe izin verdi.