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]
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.
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.
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
.
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.
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).
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.
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.
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]