Hallo,
Ich habe gelesen das man einen Shell ersatz programmieren kann und wollte fragen was man da alles für Funktionen und so mit einprogrammieren muss? Wäre auch glücklich wenn jemand ein tutorial oder ein HowTo dafür hätte.
Hallo,
Ich habe gelesen das man einen Shell ersatz programmieren kann und wollte fragen was man da alles für Funktionen und so mit einprogrammieren muss? Wäre auch glücklich wenn jemand ein tutorial oder ein HowTo dafür hätte.
Hallo,
Ich habe gelesen das man einen Shell ersatz programmieren kann
und wollte fragen was man da alles für Funktionen und so mit
einprogrammieren muss?
Müssen tut man gar nicht. Man sollte halt die Funktionen einprogrammieren, die man braucht.
Wenn die Shell einem bestimmten Standard folgen soll, solltest du dich an POSIX 1003.2 orientieren.
Wäre auch glücklich wenn jemand ein
tutorial oder ein HowTo dafür hätte.
In welcher Programmiersprache?
Grüße,
Moritz
Hallo,
Ich habe gelesen das man einen Shell ersatz programmieren kann
und wollte fragen was man da alles für Funktionen und so mit
einprogrammieren muss?Müssen tut man gar nicht. Man sollte halt die Funktionen
einprogrammieren, die man braucht.Wenn die Shell einem bestimmten Standard folgen soll, solltest
du dich an POSIX 1003.2 orientieren.Wäre auch glücklich wenn jemand ein
tutorial oder ein HowTo dafür hätte.In welcher Programmiersprache?
Purebasic oder c++
Hallo,
In welcher Programmiersprache?
Purebasic oder c++
Ich könnte dir besser helfen, wenn du etwas mehr schreiben würdest,
Eine Shell ist ein Interpreter, der auch Zeilenweise arbeiten kann.
D.h. du brauchst
Zu den einzelnen Themen gibt es größtenteils viel Literatur, man kann ein ganzes Leben lang nur über Parser lesen wenn man darauf scharf ist
Ansonsten empfehle ich Literatur zum Compiler- und Interpreterbau (die beiden unterscheiden sich nicht stark in der Architektur).
Grüße,
Moritz
Hallo,
In welcher Programmiersprache?
Purebasic oder c++
Ich könnte dir besser helfen, wenn du etwas mehr schreiben
würdest,
- was das Ding können soll
nicht viel will bloss ausprobieren
- was die Motivation dahinter ist (Lernen eine Shell zu
programmieren? Wird eine bestimmte gebraucht?)
will nur lernen wie man so was macht
- Was du alles programmiertechnisch schon kannst.
mit purebasic kann ich relativ gut umgehen aber es ist so viel ich weiss nicht so gut für objektorientiertes programmieren
Eine Shell ist ein Interpreter, der auch Zeilenweise arbeiten
kann.
D.h. du brauchst
- einen Parser (+ lexer). Willst du den selbst schreiben?
Oder einen Parsergenerator wie bison benutzen?
lieber so was benutzen weil ich ehrlich gesagt keine ahnung habe was das ist werde mal nachlesen
- Einen AST (Abstract Syntax Tree)
- eine Umgebung (Umgebungsvariablen, Optionen) - das ist
Objektorientiert gut zu machen- Ein Backend, dass den AST ausführt (also so Sachen wie if
und Schleifen verarbeitet und auch externe Programme startet)- Jede Menge builtins (wie cd, pwd), die vor allem die
Umgebung beeinflussenZu den einzelnen Themen gibt es größtenteils viel Literatur,
man kann ein ganzes Leben lang nur über Parser lesen wenn man
darauf scharf istAnsonsten empfehle ich Literatur zum Compiler- und
Interpreterbau (die beiden unterscheiden sich nicht stark in
der Architektur).Grüße,
Moritz
Ist Themenverwandt darum hier:
Ist die Programmiersprache egal, zum Beispiel…JAVA?
Ichmein so eine „Bash“ in JAVA ist sicher auch interesant. (wenngleich ich zugeben muss das ich nciht weis wie das am intelligentesten zu lösen wäre wenn man programme die nicht java sind starten will)
Hallo,
Ist Themenverwandt darum hier:
Ist die Programmiersprache egal, zum Beispiel…JAVA?
Ichmein so eine „Bash“ in JAVA ist sicher auch interesant.
Interessant schon, ja…
(wenngleich ich zugeben muss das ich nciht weis wie das am
intelligentesten zu lösen wäre wenn man programme die nicht
java sind starten will)
Und genau da liegt der Haken: eine Shell macht jede Menge lowlevel-Zeugs, da wäre es schon ganz praktisch, wenn man direkt syscalls machen könnte.
Grüße,
Moritz
Und genau da liegt der Haken: eine Shell macht jede Menge
lowlevel-Zeugs, da wäre es schon ganz praktisch, wenn man
direkt syscalls machen könnte.
Letztendlich ‚fork‘ und ‚exec‘ unter POSIX-Systemen. Man muss halt Prozesse starten können (und gegebenenfalls deren stdin/out/err file-descriptor ändern…).
will nur lernen wie man so was macht
Dir geht es nur darum, dass du in deiner shell einen programmnamen eingibst, dieses aufgeführt wird und danach deine shell wieder erscheint?
Welches Betriebssystem? Da du C/C++ in Erwägung gezogen hast und vom Betriebssystem nichts gesagt hast, nehme ich mal Linux. Dann empfehle ich dir die man-pages
zu lesen. Damit kannst du eine mini-mini-shell bauen. Aber wenn du nicht mehr sagst, außer das du was lernen willst, kann man auch nicht mehr antworten…
Hallo,
Naja, nicht nur. Man braucht auch pipe(2), kill(2), setenv(3) und getenv(3) wenn die Bibliotheken das nicht emulieren, eventuell getpid(2) und getppid(2), und ich denke noch mehr davon.
Meine ersten Versuche eine Shell zu schreiben sind zwar schon ein paar Jahre her, aber es ist genug hängen geblieben um zu wissen, dass es nicht so einfach ist wie es scheint
Grüße,
Moritz
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
will nur lernen wie man so was macht
Dir geht es nur darum, dass du in deiner shell einen
programmnamen eingibst, dieses aufgeführt wird und danach
deine shell wieder erscheint?Welches Betriebssystem? Da du C/C++ in Erwägung gezogen hast
und vom Betriebssystem nichts gesagt hast, nehme ich mal
Linux. Dann empfehle ich dir die man-pages
nein habe Win XP, linux hab ich zwar auf meinen Virtuellen PC
- execve
- fork
- dup (für so sachen wie: echo „hello“ > test.txt)
zu lesen. Damit kannst du eine mini-mini-shell bauen. Aber
wenn du nicht mehr sagst, außer das du was lernen willst, kann
man auch nicht mehr antworten…
nein habe Win XP, linux hab ich zwar auf meinen Virtuellen PC
Womit alles hinfällig wird, du willst also eine neue Shell für Windows basteln?
Meinst du damit die cmd.exe oder tatsächlich teile der grafischen Umgebung?
(Sprich den Explorer austauschen)
weil das erfordert beides total unterschiedliche heranangehensweisen
oder ander sgefragt:
willst du sowas wie dashier machen? http://de.wikipedia.org/wiki/LiteStep
Hallo Moritz
Meine ersten Versuche eine Shell zu schreiben sind zwar schon
ein paar Jahre her, aber es ist genug hängen geblieben um zu
wissen, dass es nicht so einfach ist wie es scheint
Hm, als ich vor einem halben Jahr ein kleines x86 Betriebssystem geschrieben habe war das nicht der Aufwand. Hängt halt stark davon ab, was sie können soll…
so long,
KoRn
Hallo,
Hm, als ich vor einem halben Jahr ein kleines x86
Betriebssystem geschrieben habe war das nicht der Aufwand.
Hängt halt stark davon ab, was sie können soll…
POSIX-kompatiabel sollte sie sein, und noch ein paar zusätzliche Features (z.B. stdin, stdout und stderr eines Prozesses im Nachhinein umleiten oder pipen). Leider sind wir nie fertig geworden
Grüße,
Moritz
eher sowas aber ich glaube das wird meine Programmierkenntnisse überfordern aber probieren will ich es schon. Oder wird das mir zu schwer werden?
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Oder wird das mir zu schwer werden?
Ganz einfach: Ausprobiern.