Nächste: Geplante Auftragsausführung durch Benutzer, Vorige: Essenzielle Persönliche Dienste, Nach oben: Persönliche Dienste [Inhalt][Index]
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.
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.
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
.
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.
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]