Nächste: , Vorige: , Nach oben: Persönliche Dienste   [Inhalt][Index]


13.3.2 Shells

Shells spielen eine ziemlich wichtige Rolle bei der Initialisierung der Umgebung. Sie können Ihre Shells selbst einrichten, wie im Abschnitt Shell-Konfiguration beschrieben, aber empfehlen tun wir, dass Sie die folgend aufgeführten Dienste benutzen. Das ist sowohl leichter als auch zuverlässiger.

Jede Persönliche Umgebung instanziiert home-shell-profile-service-type, was eine Datei ~/.profile erzeugt, die von allen POSIX-kompatiblen Shells geladen wird. In der Datei sind alle Schritte enthalten, die nötig sind, um die Umgebung ordnungsgemäß zu initialisieren. Allerdings bevorzugen viele moderne Shells wie Bash oder Zsh, ihre eigenen Dateien beim Starten zu laden. Darum brauchen wir für diese jeweils einen Persönlichen Dienst (home-bash-service-type und home-zsh-service-type), um dafür zu sorgen, dass ~/.profile durch ~/.bash_profile bzw. ~/.zprofile gesourcet werden.

Shell-Profil-Dienst

Datentyp: home-shell-profile-configuration

Verfügbare home-shell-profile-configuration-Felder sind:

profile (Vorgabe: ()) (Typ: Konfigurationstexte)

Ein home-shell-profile-Dienst wird durch die Persönliche Umgebung automatisch instanziiert. Legen Sie den Dienst also bloß nicht manuell an; Sie können ihn lediglich erweitern. Für profile wird eine Liste dateiartiger Objekte erwartet, die in die Datei ~/.profile aufgenommen werden. Nach Vorgabe enthält ~/.profile nur den Code zur Initialisierung, der von Login-Shells ausgeführt werden muss, um die Persönliche Umgebung für den Benutzer verfügbar zu machen. Andere Befehle können hier auch in die Datei eingefügt werden, wenn sie wirklich unbedingt dort stehen müssen. In den meisten Fällen schreibt man sie besser in die Konfigurationsdateien der Shell, wenn man eigene Anpassungen wünscht. Erweitern Sie den home-shell-profile-Dienst nur dann, wenn Sie wissen, was Sie tun.

Persönlicher Bash-Dienst

Datentyp: home-bash-configuration

Verfügbare home-bash-configuration-Felder sind:

package (Vorgabe: bash) (Typ: „package“)

Das Bash-Paket, was benutzt werden soll.

guix-defaults? (Vorgabe: #t) (Typ: Boolescher-Ausdruck)

Ob vernünftige Voreinstellungen an den Anfang der Datei .bashrc angefügt werden sollen, wie /etc/bashrc zu lesen und die Ausgaben von ls einzufärben.

environment-variables (Vorgabe: ()) (Typ: Assoziative-Liste)

Eine assoziative Liste der Umgebungsvariablen, die für die Bash-Sitzung gesetzt sein sollen. Dieselben Regeln wie für den home-environment-variables-service-type gelten auch hier (siehe Essenzielle Persönliche Dienste). Der Inhalt dieses Felds wird anschließend an das, was im bash-profile-Feld steht, angefügt.

aliases (Vorgabe: ()) (Typ: Assoziative-Liste)

Assoziative Liste der Alias-Namen, welche für die Bash-Sitzung eingerichtet werden sollen. Die Alias-Namen werden nach dem Inhalt des bashrc-Feldes in der Datei .bashrc definiert. Jeder Alias-Name steht automatisch in Anführungszeichen, d.h. ein Eintrag wie:

'(("ls" . "ls -alF"))

wird zu

alias ls="ls -alF"
bash-profile (Vorgabe: ()) (Typ: Konfigurationstexte)

Eine Liste dateiartiger Objekte, die in .bash_profile eingefügt werden. Damit können benutzereigene Befehle beim Start der Login-Shell ausgeführt werden. (In der Regel handelt es sich um die Shell, die gestartet wird, direkt nachdem man sich auf der Konsole (TTY) anmeldet.) .bash_login wird niemals gelesen, weil .bash_profile immer existiert.

bashrc (Vorgabe: ()) (Typ: Konfigurationstexte)

Eine Liste dateiartiger Objekte, die in .bashrc eingefügt werden. Damit können benutzereigene Befehle beim Start einer interaktiven Shell ausgeführt werden. (Interaktive Shells sind Shells für interaktive Nutzung, die man startet, indem man bash eintippt oder die durch Terminal-Anwendungen oder andere Programme gestartet werden.)

bash-logout (Vorgabe: ()) (Typ: Konfigurationstexte)

Eine Liste dateiartiger Objekte, die zu .bash_logout hinzugefügt werden. Damit können benutzereigene Befehle beim Verlassen der Login-Shell ausgeführt werden. Die Datei wird in manchen Fällen nicht gelesen (wenn die Shell zum Beispiel durch exec eines anderen Prozesses terminiert).

Sie können den Bash-Dienst mit Hilfe einer Konfiguration im Verbundsobjekt home-bash-extension erweitern. Dessen Felder spiegeln meistens die von home-bash-configuration (siehe home-bash-configuration). Die Inhalte der Erweiterungen werden ans Ende der zugehörigen Bash-Konfigurationsdateien angehängt (siehe Bash Startup Files in Referenzhandbuch von GNU Bash.

Zum Beispiel können Sie so einen Dienst definieren, der den Bash-Dienst erweitert, um in ~/.bash_profile eine weitere Umgebungsvariable PS1 definieren zu lassen:

(define bash-tolle-eingabeaufforderung-service
  (simple-service 'bash-tolle-eingabeaufforderung
                  home-bash-service-type
                  (home-bash-extension
                   (environment-variables
                    '(("PS1" . "\\u \\wλ "))))))

Den Dienst bash-tolle-eingabeaufforderung-service würden Sie anschließend ins services-Feld im home-environment Ihrer Persönlichen Umgebung eintragen. Nun folgt die Referenz zu home-bash-extension.

Datentyp: home-bash-extension

Verfügbare home-bash-extension-Felder sind:

environment-variables (Vorgabe: ()) (Typ: Assoziative-Liste)

Zusätzliche Umgebungsvariable, die festgelegt werden sollen. Diese werden mit den Umgebungsvariablen anderer Erweiterungen und denen des zugrunde liegenden Dienstes zu einem zusammenhängenden Block aus Umgebungsvariablen vereint.

aliases (Vorgabe: ()) (Typ: Assoziative-Liste)

Zusätzliche Alias-Namen, die festgelegt werden sollen. Diese werden mit den Alias-Namen anderer Erweiterungen und denen des zugrunde liegenden Dienstes zusammengelegt.

bash-profile (Vorgabe: ()) (Typ: Konfigurationstexte)

Zusätzliche Textblöcke, die zu .bash_profile hinzugefügt werden sollen. Diese werden zu den Textblöcken anderer Erweiterungen und denen des zugrunde liegenden Dienstes hinzugenommen.

bashrc (Vorgabe: ()) (Typ: Konfigurationstexte)

Zusätzliche Textblöcke, die zu .bashrc hinzugefügt werden sollen. Diese werden zu den Textblöcken anderer Erweiterungen und denen des zugrunde liegenden Dienstes hinzugenommen.

bash-logout (Vorgabe: ()) (Typ: Konfigurationstexte)

Zusätzliche Textblöcke, die zu .bash_logout hinzugefügt werden sollen. Diese werden zu den Textblöcken anderer Erweiterungen und denen des zugrunde liegenden Dienstes hinzugenommen.

Persönlicher Zsh-Dienst

Datentyp: home-zsh-configuration

Verfügbare home-zsh-configuration-Felder sind:

package (Vorgabe: zsh) (Typ: „package“)

Das zu benutzende Zsh-Paket.

xdg-flavor? (Vorgabe: #t) (Typ: Boolescher-Ausdruck)

Ob alle Konfigurationsdateien in $XDG_CONFIG_HOME/zsh platziert werden sollen. Auch wird ~/.zshenv dann ZDOTDIR auf $XDG_CONFIG_HOME/zsh festlegen. Der Startvorgang der Shell wird mit $XDG_CONFIG_HOME/zsh/.zshenv fortgeführt.

environment-variables (Vorgabe: ()) (Typ: Assoziative-Liste)

Eine assoziative Liste, welche Umgebungsvariable in der Zsh-Sitzung festgelegt sein sollen.

zshenv (Vorgabe: ()) (Typ: Konfigurationstexte)

Eine Liste dateiartiger Objekte, die zu .zshenv hinzugefügt werden. Damit können benutzereigene Shell-Umgebungsvariable festgelegt werden. Enthaltene Befehle dürfen kein vorhandenes TTY voraussetzen und sie dürfen nichts ausgeben. Die Datei wird immer gelesen. Sie wird vor jeder anderen Datei in ZDOTDIR gelesen.

zprofile (Vorgabe: ()) (Typ: Konfigurationstexte)

Eine Liste dateiartiger Objekte, die in .zprofile eingefügt werden. Damit können benutzereigene Befehle beim Start der Login-Shell ausgeführt werden. (In der Regel handelt es sich um die Shell, die gestartet wird, direkt nachdem man sich auf der Konsole (TTY) anmeldet.) .zprofile wird vor .zlogin gelesen.

zshrc (Vorgabe: ()) (Typ: Konfigurationstexte)

Eine Liste dateiartiger Objekte, die in .zshrc eingefügt werden. Damit können benutzereigene Befehle beim Start einer interaktiven Shell ausgeführt werden. (Interaktive Shells sind Shells für interaktive Nutzung, die man startet, indem man zsh eintippt oder die durch Terminal-Anwendungen oder andere Programme gestartet werden.)

zlogin (Vorgabe: ()) (Typ: Konfigurationstexte)

Eine Liste dateiartiger Objekte, die in .zlogin eingefügt werden. Damit können benutzereigene Befehle am Ende des Startvorgangs der Login-Shell ausgeführt werden.

zlogout (Vorgabe: ()) (Typ: Konfigurationstexte)

Eine Liste dateiartiger Objekte, die zu .zlogout hinzugefügt werden. Damit können benutzereigene Befehle beim Verlassen der Login-Shell ausgeführt werden. Die Datei wird in manchen Fällen nicht gelesen (wenn die Shell zum Beispiel durch exec eines anderen Prozesses terminiert).


Nächste: Geplante Auftragsausführung durch Benutzer, Vorige: Essenzielle Persönliche Dienste, Nach oben: Persönliche Dienste   [Inhalt][Index]