96 votes

Emplacement standard pour les bash_completion.d définis par l'utilisateur scripts ?

J'ai un accès utilisateur (pas de root) dans une machine Linux (Suse) où j'ai développé quelques bash scripts et les règles d'autocomplétion bash correspondantes.

Puisque les scripts n'appartiennent qu'à mon utilisateur et que j'ai donc besoin que les règles complètes ne soient "actives" que pour moi (une partie du fait que je n'ai pas d'accès en écriture root), placer mon scripts de bash_completion dans /etc/bash_completion.d/ n'est pas une option.

Pour le moment, j'ai nommé mon fichier .bash_completion.myscript et la source directement à partir de mon .bashrc mais je me demande s'il existe un autre moyen "standard" d'obtenir ces résultats, déjà pris en compte dans l'implémentation de bash.

Par exemple, la création d'un dossier /home/myuser/.bash_completion.d/ ?

3voto

El réponse de Russell E Glaue est génial mais son ~/.bash_completion est incomplète.

Le problème est que lorsque ~/.bash_completion.d/ est vide et par la suite for f in ~/.bash_completion.d/* imprime le message d'erreur suivant :

-bash : /home/user/.bash_completion.d/* : Aucun fichier ou répertoire de ce type

La solution la plus simple et portable consiste à sauter la boucle si le répertoire est vide :

if [[ -d ~/.bash_completion.d/ ]] && \
   ! find ~/.bash_completion.d/. ! -name . -prune -exec false {} +
then
    for f in ~/.bash_completion.d/*
    do
        source "$f"
    done
fi

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X