Init des fichiers de conf du home d'un utilisateur

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:

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

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.

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 !

#!/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


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