Vytvorenie prispôsobeného shell - c ++, linux, bash, shell, unix

Vytvoril som prispôsobený shell v C ++. V súčasnosti je shell navrhnutý ako nekonečná, zatiaľ čo slučka, ktorá sa spúšťa spustením zodpovedajúceho spustiteľného súboru z terminálu (používam Ubuntu ako môj operačný systém). Shell implementuje niekoľko nových príkazov, ktoré sú uložené ako samostatné spustiteľné súbory v súborovom systéme. Ostatné príkazy, ktoré používateľ zadá, sa priamo vykonajú pomocou príkazu execve() funkcia balenia.

Takže v podstate vykonávam všetky užívateľské príkazy pomocou funkcie execve (): prispôsobené príkazy sú uložené ako samostatné exectuables a sú "execed "tým, že poskytuje cestu k spustiteľnému súboru, zatiaľ čo akýkoľvek iný" štandardný "príkaz UNIX je priamo execed.

Namiesto spustenia ako samostatného spustiteľného súboru bash, Chcem aby používal môj shell že vykoná na termináli, Ako to môžem spraviť?

Hovoril som o nasledujúcich odkazoch:

Procesov a relácií a kontrolných terminálov

Vytváranie shell UNIX

Nemôžem však zistiť spojenia ako spojenie medzi kontrolným terminálom a škrupinou atď. V tomto ohľade by bola užitočná akákoľvek pomoc.

UPDATE:

To môže znieť trochu nelogické, ale:

Existuje nejaký spôsob, ako ju implementovať ako užívateľský príkaz, ktorý môže užívateľ spustiť z aktuálneho shellu? Viem, že existuje príkaz nazvaný chsh ... ale bude fungovať s mojím shellom?

odpovede:

1 pre odpoveď č. 1

Najskôr môžete otestovať svoj shell z bash exec yourshell, toto nahrádza proces bash s vaším shellom úplne. (Keď opustíte svoj shell, terminál sa s ním ukončí / odhlásí.)

Môžete tiež spustiť xterm -e yourshell spustiť xterm s vaším shellom namiesto bash.

Ak chcete natrvalo vytvoriť svoj predvolený shell:

  1. Pridajte svoj shell do zoznamu systémových shellov, /etc/shells
  2. Zmeňte používateľské prihlasovacie shell s chsh
  3. Odhlásiť sa a znova

Najpopulárnejší