Ich erinnere mich, dass Linux auf eingebetteten Systemen aufgrund von Größenbeschränkungen nicht so viele Befehle packen kann wie auf normalen Workstations. So gibt es einen Do-it-all - Befehl, der alle nachahmen können fast die Befehle (einschließlich ls
, cd
, time
, etc.), aber ich erinnere mich nicht seinen Namen.
Ich erinnerte mich nur vage an etwas wie "Minibox" oder so, es scheint, als hätte es eine "Box" im Namen, weiß jemand, wie es heißt?
linux
command-line
embedded
Wangshuaijie
quelle
quelle
cd
, das ist nicht möglich.sh
, wascd
so ein eingebautes hat.emacs
...Antworten:
Die beliebteste könnte BusyBox sein , aber es gibt auch Toolbox (von Android verwendet), Toybox und vielleicht andere.
quelle
grep
wahrscheinlich ein Link zur Busybox. Die einzige Ausnahme wird sein,cd
da dies eine eingebaute Shell sein muss.Sie beziehen sich wahrscheinlich auf Busybox , eine All-in-One-Shell.
quelle
BusyBox ist auf eine ziemlich neue Art und Weise entworfen, die ziemlich verwirrend sein kann, wenn Sie anfangen, in Ihren / bin-Verzeichnissen herumzusuchen.
Wie von MSalters angegeben, ist BusyBox nur eine ausführbare Datei. Es hängt jedoch davon ab, dass für jeden "Befehl" eine symbolische Verknüpfung zu dieser ausführbaren Datei erstellt wird. Wenn der Name des Symlinks bekannt ist, mit dem er gestartet wurde, kann er die C-Funktion für diesen Befehl ausführen.
So sieht der Start meines PuppyLinux 5.2.8 Lucid / bin-Verzeichnisses aus wie ...
Beachten Sie, dass es sich bei den meisten Befehlen um Symlinks zu handelt
busybox
. Dies schließt dieash
sehr minimalistische Shell ein, die vor allem bei Startvorgängen verwendet wird. Beachten Sie außerdem, dass der Distributionsautor die eigenständigen Befehle einbezogbunzip2
undbzcat
stattdessen die Busybox-Versionen verwendete. Die symbolischen Verweisebunzip-BB-NOTUSED
undbzcat-BB-NOTUSED
sind nicht wirklich notwendig, helfen aber zu dokumentieren, was gerade für die Kosten eines symbolischen Verweises los ist.Beachten Sie auch, dass ein Verzeichnis, das Größen für das Ziel von Symlinks (
ls -lL
oderls -l --dereference
) anstelle des Symlinks selbst angibt, die Größe jedes Befehls mit der von angibtbusybox
. So zeigt die gleiche Liste mit der-L
Option ...Das Ziel von BusyBox ist die maximale Wiederverwendung von Code in sich selbst, um den Speicher- und Plattenplatzbedarf (dh den "Platzbedarf") für einen allgemeinen Befehlssatz zu minimieren ... ohne eine Shell selbst zu benötigen.
Bash und andere Muscheln erreichen dasselbe. Dazu implementieren sie jedoch ihre eigene Befehlszeilenumgebung. Dieses Ziel ist auch einer der Gründe für einige der sehr archaischen Syntax für viele Shell-Funktionalitäten.
Ich verwende derzeit diese "BusyBox-Technik" für eine Bibliothek von Bash-Funktionen und einfachere Verwendung von Wrappern für verschiedene Bashismen . Damit kann ich Befehle einfach mit
--help
Optionen "erweitern" und GUI-Versionen abfeuern, sofern verfügbar.quelle