Lembro que, para o Linux executando em sistemas embarcados, devido a limitações de tamanho, ele não pode carregar tantos comandos quanto em estações de trabalho comuns. Portanto, há um do-it-all comando que pode imitar quase todos os comandos (incluindo ls
, cd
, time
, etc.), mas eu não me lembro seu nome.
Acabei de me lembrar vagamente de algo como "minibox" ou algo assim, parece que tem uma "caixa" em seu nome, alguém sabe qual é o seu nome?
linux
command-line
embedded
wangshuaijie
fonte
fonte
cd
, porém, isso não é possível.sh
, que temcd
como um built-in.emacs
...Respostas:
O mais popular pode ser o BusyBox , mas também existem caixas de ferramentas (usadas pelo Android), caixas de brinquedos e talvez outras.
fonte
grep
provavelmente é um link para o busybox. A única exceção serácd
que tem que ser um shell embutido.Você provavelmente está se referindo ao Busybox , um shell "tudo em um".
fonte
O BusyBox foi projetado de uma maneira bastante nova que pode ser bastante confusa quando você começa a vasculhar os diretórios / bin.
Como MSalters indicou, o BusyBox é apenas um executável. Mas isso depende da criação de um link simbólico com o executável para cada "comando" nele. Ao saber o nome do link simbólico com o qual foi iniciado, ele sabe executar a função C para esse comando.
Assim, o início do meu diretório PuppyLinux 5.2.8 Lucid / bin se parece com ...
Observe que a maioria dos comandos são links simbólicos para
busybox
. Isso inclui oash
shell muito minimalista usado principalmente durante as operações de inicialização. Observe também que o autor da distribuição optou por incluir os comandos independentesbunzip2
e, embzcat
vez de usar as versões do busybox. Os links simbólicosbunzip-BB-NOTUSED
ebzcat-BB-NOTUSED
não são realmente necessários, mas ajudam a documentar o que está acontecendo apenas pelo custo de um link simbólico.Observe também que um diretório que relate os tamanhos para o destino dos links simbólicos (
ls -lL
ouls -l --dereference
) em vez do próprio link simbólico, relatará o tamanho de cada comando como o mesmo debusybox
. Assim, a mesma lista com a-L
opção mostra ...O objetivo do BusyBox é a reutilização máxima de código dentro de si, a fim de minimizar a memória e o espaço em disco necessários (ou seja, a "área ocupada") para um conjunto comum de comandos ... sem exigir o próprio shell.
Bash e outras conchas realizam a mesma coisa. Mas, para isso, eles implementam seu próprio ambiente de linha de comando. Esse objetivo também é um dos motivos de algumas das sintaxes muito arcaicas de muitas funcionalidades do shell.
Atualmente, estou usando essa "técnica BusyBox" para uma biblioteca de funções do Bash e mais fácil de usar wrappers para vários bashismos . Ele me permitiu "estender" facilmente comandos com
--help
opções e disparar versões da GUI, quando disponíveis.fonte