Existuje nějaký vnitřní rozdíl mezi vestavěným příkazem a jiným příkazem, který může nominálně dělat totéž?
např. Dostávají vestavby „speciální“ zacházení? … je v nich méně režie? .. nebo jsou prostě jen ‚vestavěné‘; jako přístrojová deska vašeho auta?
…a existuje definitivní (aktuální) seznam těchto vestavěných prvků?
Přijatá odpověď:
Z vašich komentářů se zdá, že jste zmatení tím, co přesně je skořápka je. Za správu systému odpovídá jádro. Je to část, která ve skutečnosti načítá a spouští programy, přistupuje k souborům, přiděluje paměť atd. Ale jádro nemá žádné uživatelské rozhraní; můžete s ním komunikovat pouze pomocí jiného programu jako prostředníka.
Shell je program, který vytiskne výzvu, přečte od vás řádek vstupu a poté jej interpretuje jako jeden nebo více příkazů pro manipulaci se soubory nebo spouštění jiných programů. Před vynálezem GUI byl shell primárním uživatelským rozhraním OS. V systému MS-DOS se shell jmenoval command.com
a jen málo lidí se kdy pokusilo použít jiný. Na Unixu však již dlouho existuje několik shellů, ze kterých si uživatelé mohli vybrat.
Lze je rozdělit do 3 typů. Shelly kompatibilní s Bourne používají syntaxi odvozenou z původního shellu Bourne. C shelly používají syntaxi z původního C shellu. Pak jsou tu netradiční shelly, které vymýšlejí svou vlastní syntaxi nebo si ji vypůjčují z nějakého programovacího jazyka a jsou obecně mnohem méně populární než první dva typy.
Vestavěný příkaz je jednoduše příkaz, který shell provádí sám, místo aby jej interpretoval jako požadavek na zavedení a spuštění nějakého jiného programu. To má dva hlavní efekty. Za prvé, je to obvykle rychlejší, protože načtení a spuštění programu nějakou dobu trvá. Samozřejmě, čím déle trvá spuštění příkazu, tím méně významná je doba načítání v porovnání s celkovou dobou běhu (protože doba načítání je poměrně konstantní).
Za druhé, vestavěný příkaz může ovlivnit vnitřní stav shellu. To je důvod, proč příkazy jako cd
musí být vestavěný, protože externí program nemůže změnit aktuální adresář shellu. Další příkazy, například echo
, mohou být zabudovány pro efektivitu, ale neexistuje žádný vnitřní důvod, proč by nemohly být externími příkazy.
Které příkazy jsou vestavěné, závisí na shellu, který používáte. Seznam si budete muset prostudovat v dokumentaci (např. bash
vestavěné příkazy jsou uvedeny v kapitole 4 příručky). type
příkaz vám může říct, zda je příkaz vestavěný (pokud je váš shell kompatibilní s POSIX), protože POSIX vyžaduje type
být vestavěný. Pokud which
není vestavěný ve vašem shellu, pak pravděpodobně nebude vědět o vestavěných modulech vašeho shellu, ale bude jen hledat externí programy.