# Init des fichiers de conf du home d'un utilisateur

**URL:** <https://www.debian-fr.org/t/init-des-fichiers-de-conf-du-home-dun-utilisateur/59714>\
**Category:** Trucs et Astuces\
**Created:** [Février 21, 2016, 6:34 UTC](https://www.debian-fr.org/t/init-des-fichiers-de-conf-du-home-dun-utilisateur/59714 "2016-02-21T18:34:32Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![hulk](https://www.debian-fr.org/user_avatar/www.debian-fr.org/hulk/32/3868_2.png) [@hulk](https://www.debian-fr.org/u/hulk)\
**Post date:** [Février 21, 2016, 6:34 UTC](https://www.debian-fr.org/t/init-des-fichiers-de-conf-du-home-dun-utilisateur/59714/1 "2016-02-21T18:34:32Z")

</div>

c’est juste un petit script qui m’aide bien souvent quant ,j’ai un peut trop farfouiller dans les fichiers de conf de mon home, est que du cou je n’arrive plus a revenir en arrières.  
en root créer un fichier , du nom de inithome par exemple:  
puis coller y le code ci-dessous.  
modifier sur les conseilles de nilux17 et MisterFreez.  
Merci pour vos améliorations , j’en apprend tous les jours!!

[code]if [$# -ne ‘1’]  
then  
echo "Usage : $0 username"  
exit 1  
fi  
HOMEUSER=$(getent passwd “$1” | cut -d ‘:’ -f6)  
if [[-z “${HOMEUSER}”]]; then  
echo 'Veuillez passer un utilisateur valide en paramètre!'  
exit 1  
fi

echo 'attention vous perdrais tous vos fichiers répertoires cachés’  
echo "on réinitialise $HOMEUSER/ ? (y/N)"  
read okclavier  
if [-z $okclavier] || [$okclavier != “y”]  
then  
# ce scripte permet de réparer un home corrompu sans perdre sa configuration icedove et iceweasel  
tar -cvzf ${1}\_icedove.tar.gz -C $HOMEUSER/ .icedove  
tar -cvzf ${1}\_mozilla.tar.gz -C $HOMEUSER/ .mozilla  
rm -R $HOMEUSER/.[a-Z]\*  
cp -R /etc/skel/.[a-Z]\* $HOMEUSER/  
tar -xvzf ${1}\_icedove.tar.gz -C $HOMEUSER/  
tar -xvzf ${1}\_mozilla.tar.gz -C $HOMEUSER/  
mkdir -p $HOMEUSER/.config  
mkdir -p $HOMEUSER/.local/share/desktop-directories  
mkdir -p $HOMEUSER/.local/share/applications  
cp -R /etc/xdg/\* $HOMEUSER/.config/  
cp -R /usr/share/desktop-directories/\* $HOMEUSER/.local/share/desktop-directories/  
cp -R /usr/share//applications/\* $HOMEUSER/.local/share/applications/  
chown -R ${1} $HOMEUSER/.[a-Z]\*  
chgrp -R ${1} $HOMEUSER/.[a-Z]\*

fi[/code]  
le rendre exécutable:

```auto

```

puis on lance la commande  
(attention vous perdrait tous vaux fichiers répertoire cachée):

```auto

```

voila un home tous propre, mais sans perdre la configuration icedove (messagerie) et iceweasel (mon navigateur marque page …)  
on peut l’adapter si par exemple on utilise d’autres navigateur ou messagerie.

---

<div class="post-metadata">

**Author:** ![nilux17](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/n/bc79bd/32.png) [@nilux17](https://www.debian-fr.org/u/nilux17)\
**Post date:** [Février 21, 2016, 6:39 UTC](https://www.debian-fr.org/t/init-des-fichiers-de-conf-du-home-dun-utilisateur/59714/2 "2016-02-21T18:39:23Z")

</div>

Sans trop comprendre l’intérêt d’un tel script…  
voici ce qui à mon humble avis manque dans ton script : le controle du nombre d’argument voir une confirmation avant action !

```auto
#!/bin/sh

if [$# -ne '1']
  then
	echo "Usage : $0 username"
  else

  #on peu même rajouter une confirmation clavier avec un read :
  echo "on réinitialise /home/${1}/ ? (y/N)"
  read okclavier

  if [-z $okclavier] || [$okclavier != "y"]
  then 

  #les insctructions ici

  fi

fi

```

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 21, 2016, 6:41 UTC](https://www.debian-fr.org/t/init-des-fichiers-de-conf-du-home-dun-utilisateur/59714/3 "2016-02-21T18:41:50Z")

</div>

`PCUSER=`cat /etc/passwd | cut -d":" -f1,3| grep -E [1-9][0-9][0-9][0-9] | cut -d ":" -f1`
USEREXIST=0
for USER in $PCUSER
do
   if [${1} = $USER] ; then
      USEREXIST=1
   fi
done
if [$USEREXIST -eq 0] ; then
   echo 'veuillez passer un utilisateur valide en paramètre!'
   exit 1
fi
HOMEUSER=`cat /etc/passwd | grep ${1} | cut -d ":" -f6`
`  
Un UUOC, beaucoup de commandes et beaucoup de shell pour simplement vérifier que l’utilisateur existe ?

`HOMEUSER=$(getent passwd "$1" | cut -d ':' -f6)
if [[-z "${HOMEUSER}"]]; then
    echo 'Veuillez passer un utilisateur valide en paramètre!'
    exit 1
fi
`

Pourquoi ma solution est meilleure ?  
[ul]  
[li]elle est standard POSIX[/li]  
[li]elle est plus simple, rien est compliqué dedans[/li]  
[li]elle est performante, on ne lance qu’un seul processus pas de pipe ou autre[/li]  
[li]elle fonctionne partout y compris quand tu n’a pas de /etc/passwd (si les utilisateurs sont dans un annuaire LDAP par exemple)[/li][/ul]

(au passage ma solution n’écrase pas la variable environnement USER)

@nilux17 \> Son script permet de réinitialiser un $HOME en cas de problème (je ne sais pas vraiment les quels).
