Tilde expansion dans bash

Top Page

Reply to this message
Author: JM Coursimault
Date:  
To: ML Guilde
Subject: Tilde expansion dans bash
Hello folks,

J'essaie d'utiliser l'expansion du tilde dans bash pour arriver dans la
home dir de mes utilisateurs. Sur la ligne de commande, cela marche
impec, mais pas dans un script.

Exemple simplifié: je récupère dans /var/spool/mail les fichiers
existants (dont le nom est celui du user propriétaire) et je tente de
lister leur home dir (qui n'est pas forcément dans /home) :

#!/bin/bash
cd /var/spool/mail
for USER in *
do echo $USER
ls ~$USER
done

Résultat : un paquet d'erreurs du type
ls: ne peut accéder ~monuser: Aucun fichier ou répertoire de ce type

alors que si je tape à la main (ou si je fais un copier-coller depuis le
message d'erreur)
ls ~monuser
cela liste bien sa home dir.

J'ai pensé un moment que c'était un pb de code page, mais non.

J'ai pensé que la tilde expansion ne se faisait que pour des arguments
en ligne de commande, mais ce n'est pas apparemment ce que dit la doc :
http://www.faqs.org/docs/bashman/bashref_28.html

Meme chose si je tente qqchose du genre

HOMEDIR=~$USER
ls $HOMEDIR

J'ai tenté d'appeler un sous-shell, pas mieux.

Je pourrais aller parser /etc/passwd, mais ça me semble crade.

Any hints ?

Merci