GNU/Linux >> Znalost Linux >  >> Linux

Rozdíl mezi vestavěným příkazem a příkazem, který není?

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.

Související:Vyloučení ukládání některých příkazů do historie bash?
Linux
  1. Rozdíl mezi přihlašovacím prostředím a nepřihlašovacím prostředím?

  2. Rozdíl v použití mezi proměnnými shellu a proměnnými prostředí?

  3. Jaký je rozdíl mezi Sudo Su – a Sudo Su –?

  1. Rozdíl mezi potrubím a rozšířením příkazů?

  2. Linux – Jaký je rozdíl mezi `su -` a `su –login`?

  3. Rozdíl mezi Nss a Pam?

  1. Rozdíl mezi uvozovkami „…“, „…“, $“…“ a $“…“ ve skořápce?

  2. Jaký je rozdíl mezi nohoup a ampersand

  3. Jaký je rozdíl mezi &> a >&v bash?