Suivant: , Précédent: , Monter: Services du dossier personnel   [Table des matières][Index]


13.3.2 Shells

Les shells jouent un rôle important dans le processus d’initialisation de l’environnement, et vous pouvez les configurer manuellement comme décrit dans la section Configurer le shell, mais il est recommandé d’utiliser les services personnels listés plus bas. C’est à la fois plus facile et plus fiable.

Chaque environnement personnel instancie home-shell-profile-service-type, qui crée un fichier de démarrage ~/.profile pour tous les shell POSIX. Ce fichier content toutes les étapes nécessaires à l’initialisation de l’environnement, mais de nombreux shells modernes comme Bash ou Zsh préfèrent leur propres fichiers de démarrage, c’est pourquoi les services personnels correspondants (home-bash-service-type et home-zsh-service-type) s’assurent que ~/.profile est sourcé par ~/.bash_profile et ~/.zprofile, respectivement.

Service de profil du shell

Type de données :home-shell-profile-configuration

Les champs de home-shell-profile-configuration disponibles sont :

profile (par défaut : '()) (type : text-config)

home-shell-profile est instancié automatiquement par home-environment, NE créez PAS ce service manuellement, il ne peut qu’être étendu. profile est une liste d’objets simili-fichiers, qui iront dans ~/.profile. Par défaut ~/.profile contient le code d’initialisation, qui doit être évalué par le shell de connexion pour rendre le profil de l’environnement personnel disponible, mais vous pouvez ajouter d’autres commandes au fichier si c’est vraiment nécessaire. Dans la plupart des cas les personnalisations devraient aller dans les fichiers de configuration de votre shell. Étendez le service home-shell-profile qui si vous savez vraiment ce que vous faites.

Services personnel Bash

Type de données :home-bash-configuration

Les champs de home-bash-configuration disponibles sont :

package (par défaut : bash) (type : paquet)

Le paquet Bash à utiliser.

guix-defaults? (par défaut : #t) (type : booléen)

Ajoute des instructions par défaut correctes comme la lecture de /etc/bashrc et la coloration de la sortie de ls au début du fichier .bashrc.

environment-variables (par défaut : '()) (type : liste d’association)

Liste d’association de variables d’environnement à initialiser dans la session Bash. Les règles de home-environment-variables-service-type s’appliquent ici (voir Services personnels essentiels). Le contenu de ce champ sera ajouté après le contenu du champ bash-profile.

aliases (par défaut : '()) (type : liste d’association)

Liste d’association d’alias à initialiser pour la session Bash. Les alias seront définis après le contenu du champ bashrc dans le fichier .bashrc. Les alias seront automatiquement encadrés de guillemets, pour que ceci :

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

devienne

alias ls="ls -alF"
bash-profile (par défaut : '()) (type : text-config)

Liste d’objets simili-fichiers qui seront ajoutés à .bash_profile. C’est utilisé pour exécuter des commandes au démarrage d’un shell de connexion (dans la plupart des cas le shell qui démarre sur un tty après la connexion). .bash_login ne sera jamais lu parce que .bash_profile est toujours présent.

bashrc (par défaut : '()) (type : text-config)

Liste d’objets simili-fichiers qui seront ajoutés à .bashrc. C’est utilisé pour exécuter des commandes au lancement d’un shell interactif (le shell utilisé de manière interactive, démarré en tapant bash ou par votre application de terminal ou tout autre programme).

bash-logout (par défaut : '()) (type : text-config)

Liste d’objets simili-fichiers qui seront ajoutés à .bash_logout. C’est utilisé pour exécuter des commandes à la sortie d’un shell de connexion. Il ne sera pas lu dans certains cas (si le shell termine en utilisant exec sur un autre processus par exemple).

Vous pouvez étendre le service Bash en utilisant un enregistrement de configuration home-bash-extension, dont les champs correspondent à ceux de home-bash-configuration (voir home-bash-configuration). Le contenu des extensions seront ajoutées à la fin des fichiers de configuration Bash correspondants (voir Bash Startup Files dans le manuel de référence de Bash.

Par exemple, voici comment définir un service qui étend le service Bash de sorte que ~/.bash_profile définisse une variable d’environnement supplémentaire, PS1 :

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

Vous ajouterez ensuite bash-fancy-prompt-service à la liste dans le champ services de votre home-environment. Voici la documentation de référence pour home-bash-extension.

Type de données :home-bash-extension

Les champs de home-bash-extension disponibles sont :

environment-variables (par défaut : '()) (type : liste d’association)

Variables d’environnement supplémentaires à définir. Elles seront combinées aux variables d’environnement des autres extensions et du service de base pour former un bloc cohérent de variables d’environnement.

aliases (par défaut : '()) (type : liste d’association)

Alias supplémentaires à définir. Ils seront combinés aux alias des autres extensions et du service de base.

bash-profile (par défaut : '()) (type : text-config)

Blocs de texte supplémentaires à ajouter à .bash_profile, qui seront combinés avec les blocs de texte des autres extensions et du service de base.

bashrc (par défaut : '()) (type : text-config)

Blocs de texte supplémentaires à ajouter à .bashrc, qui seront combinés avec les blocs de texte des autres extensions et du service de base.

bash-logout (par défaut : '()) (type : text-config)

Blocs de texte supplémentaires à ajouter à .bash_logout, qui seront combinés avec les blocs de texte des autres extensions et du service de base.

Services personnel Zsh

Type de données :home-zsh-configuration

Les champs de home-zsh-configuration disponibles sont :

package (par défaut : zsh) (type : paquet)

Le paquet Zsh à utiliser.

xdg-flavor? (par défaut : #t) (type : booléen)

Place tous les fichiers de configuration dans $XDG_CONFIG_HOME/zsh. Cela fait initialiser ZDOTDIR à $XDG_CONFIG_HOME/zsh dans ~/.zshenv. Le processus de démarrage du shell continuera avec $XDG_CONFIG_HOME/zsh/.zshenv.

environment-variables (par défaut : '()) (type : liste d’association)

Une liste d’association de variables d’environnement à initialiser dans la session Zsh.

zshenv (par défaut : '()) (type : text-config)

Liste d’objets simili-fichiers qui seront ajoutés à .zshenv. C’est utilisé pour initialiser les variables d’environnement du shell. Elle ne doit pas contenir de commande qui suppose la présence d’un tty ou qui produise une sortie. Cela sera toujours lu, et toujours avant tout autre fichiers dans ZDOTDIR.

zprofile (par défaut : '()) (type : text-config)

Liste d’objets simili-fichiers qui seront ajoutés à .zprofile. C’est utilisé pour exécuter des commandes au démarrage d’un shell de connexion (dans la plupart des cas le shell démarré sur un tty après la connexion). Elle sera lue avant .zlogin.

zshrc (par défaut : '()) (type : text-config)

Liste d’objets simili-fichiers qui seront ajoutés à .zshrc. C’est utilisé pour exécuter des commandes au démarrage d’un shell interactif (le shell utilisé de manière interactive démarré en tapant zsh ou par votre application de terminal ou toute autre application).

zlogin (par défaut : '()) (type : text-config)

Liste d’objets simili-fichiers qui seront ajoutés à .zlogin. C’est utilisé pour exécuter des commandes à la fin du processus de démarrage du shell de connexion.

zlogout (par défaut : '()) (type : text-config)

Liste d’objets simili-fichiers qui seront ajoutés à .zlogout. C’est utilisé pour exécuter des commandes à la sortie d’un shell de connexion. Elle ne sera pas lue dans certains cas (si le shell termine après avoir utilisé exec sur un autre processus par exemple).

Inputrc Profile Service

The GNU Readline package includes Emacs and vi editing modes, with the ability to customize the configuration with settings in the ~/.inputrc file. With the gnu home services shells module, you can setup your readline configuration in a predictable manner, as shown below. For more information about configuring an ~/.inputrc file, voir Readline Init File dans GNU Readline.

Variable :home-inputrc-service-type

This is the service to setup various .inputrc configurations. The settings in .inputrc are read by all programs which are linked with GNU Readline.

Voici un exemple de service et sa configuration que vous pouvez ajouter au champ services de votre home-environment :

(service home-inputrc-service-type
         (home-inputrc-configuration
           (key-bindings
            `(("Control-l" . "clear-screen")))
           (variables
            `(("bell-style" . "visible")
              ("colored-completion-prefix" . #t)
              ("editing-mode" . "vi")
              ("show-mode-in-prompt" . #t)))
           (conditional-constructs
            `(("$if mode=vi" .
               ,(home-inputrc-configuration
                  (variables
                   `(("colored-stats" . #t)
                     ("enable-bracketed-paste" . #t)))))
              ("$else" .
               ,(home-inputrc-configuration
                  (variables
                   `(("show-all-if-ambiguous" . #t)))))
              ("endif" . #t)
              ("$include" . "/etc/inputrc")
              ("$include" . ,(file-append
                               (specification->package "readline")
                               "/etc/inputrc"))))))

The example above starts with a combination of key-bindings and variables. The conditional-constructs show how it is possible to add conditionals and includes. In the example above colored-stats is only enabled if the editing mode is vi style, and it also reads any additional configuration located in /etc/inputrc or in /gnu/store/…-readline/etc/inputrc.

The value associated with a home-inputrc-service-type instance must be a home-inputrc-configuration record, as described below.

Data Type :home-inputrc-configuration

Available home-inputrc-configuration fields are:

key-bindings (default: '()) (type: alist)

Association list of readline key bindings to be added to the ~/.inputrc file.

'((\"Control-l\" . \"clear-screen\"))

devienne

Control-l: clear-screen
variables (default: '()) (type: alist)

Association list of readline variables to set.

'((\"bell-style\" . \"visible\")
  (\"colored-completion-prefix\" . #t))

devienne

set bell-style visible
set colored-completion-prefix on
conditional-constructs (default: '()) (type: alist)

Association list of conditionals to add to the initialization file. This includes $if, else, endif and include and they receive a value of another home-inputrc-configuration.

(conditional-constructs
 `((\"$if mode=vi\" .
     ,(home-inputrc-configuration
        (variables
         `((\"show-mode-in-prompt\" . #t)))))
   (\"$else\" .
     ,(home-inputrc-configuration
        (key-bindings
         `((\"Control-l\" . \"clear-screen\")))))
   (\"$endif\" . #t)))

devienne

$if mode=vi
set show-mode-in-prompt on
$else
Control-l: clear-screen
$endif
extra-content (default: "") (type: text-config)

Extra content appended as-is to the configuration file. Run man readline for more information about all the configuration options.


Suivant: Exécution de tâches planifiées personnelles, Précédent: Services personnels essentiels, Monter: Services du dossier personnel   [Table des matières][Index]