HOWTO zur Unix-Philosophie
(C) 2006 T.Birnthaler/H.Gottschalk <howtos(at)ostc.de>
         OSTC GmbH, www.ostc.de
$Id: unix-philosophy-HOWTO.txt,v 1.8 2008-09-16 10:27:24 tsbirn Exp $

Dieses Dokument beschreibt die Philosphie des Betriebssystems UNIX.

* "Small is beautiful" (KISS-Prinzip = "Keep it simple, stupid")
  + Kleiner KERN + viele getrennte kleine Dienstprogramme
  + In Hochsprache "C" geschrieben (
  + Benutzerschnittstelle "SHELL" = ganz normales Programm
  + "No news are good news" (keine Meldungen am Programmende)
  + Programme lesen/schreiben von/auf Standard-Ein/Ausgabe (Pipeline)
  + Werkzeugkasten-Prinzip (leichte Kombinierbarkeit auf Kommandozeile)
  + Sysadmin "root" darf ALLES, normale Benutzer dürfen fast NICHTS
    (durchbrechen mit Spezialrechten: setuid/setgid/sticky)
  + Strenge Trennung von System- und Benutzerdaten
  + Strenge Trennung von Betriebssystem, GUI und Anwendungen

* Einfacher Datei- und Dateisystemaufbau
  + Nur EIN hierarchischer Dateibaum mit Wurzel "/" (keine Laufwerke!)
  + ALLES ist Datei (Speicher, Geräte,...; siehe Verz. /dev /proc /sys)
  + Datei = Folge von Bytes (keine Records fester Breite)
  + Standard-Dateiformat = Zeilenorientierter ASCII-Text (meist)
  + Groß/Kleinschreibung wird unterschieden
  + Alle Z. außer "\0" (NUL-Byte) und "/" (Verz.trenner) in Dateinamen erlaubt
  + Rechtesystem einfach (3-stufige ACL: user/group/other + read/write/execute)

* Mündiger Benutzer wird vorausgesetzt ("weiß was er tut")
  + Von Software-Entwicklern für Software-Entwickler
  + System beinhaltet standardmäßig Software-Entwicklungssystem (C, make, RCS)
  + UNIX-Quellcode mitgeliefert (zumindest anfangs)
  + Nichts wird verborgen (außer es ist unbedingt notwendig)
  + Kooperatives Arbeiten wird vorausgesetzt
  + Kaum Automatismen (z.B. Datenträger montieren)
  + Kaum GUIs

* Kommandoorientierte Bedienung
  + Benutzerschnittstelle "SHELL"
  + Saubere Trennung Datenkanal + Fehlerkanal (für Fehlermeldungen)
  + Groß/Kleinschreibung wird unterschieden
  + Gesamte Dokumentation online verfügbar (Manual-Pages)
  + Alles Englisch (Abkürzungen, Akronyme, Dokumentation)
  + Kurze klein geschr. Namen für Kommandos/Dateien/Verz. (leicht zu tippen)
  + Vermeidung von Sonderzeichen in Namen (z.B. Leerzeichen)

* Programmierbar = automatisierbar
  + Kommandoorientierte Bedienung
    - Viele Kommandos
    - Kaum GUIs
  + SHELL interaktiv + im Batch-Betrieb nutzbar
    - Vollwertige Programmiersprache
    - Einheitliche Kommandosyntax:  CMD [-OPTIONS] SOURCE DESTINATION
    - Einheitliche Quotierung:      "...", '..." und \
    - Einheitliche Namensexpansion: * ? [...] ~
    - Einheitliche Umlenkbarkeit:   Standard-Ein/Ausgabe
    - Einheitliche Exit-Stati:      0=Ok, >0=Fehler