Debian, useradd, bash et compgen
Par Thomas Martin le lundi 29 novembre 2010, 15:23 - Tech - Lien permanent
J'ai rencontré un problème étrange sur un serveur ce jour-ci : sur un compte nouvellement créé, la complétion bash échouait avec une erreur :
-sh: <( compgen -d -- '' ): No such file or directory
-sh: <( compgen -f -X -- '' ): No such file or directory
Après quelques recherches et l'aide de serverfault, voilà la cause du problème :
- J'ai utilisé la commande
useradd(8)pour créer le compte. C'est une vieille habitude que je devrais éliminer sous Debian, car la page de man deuseradd(8)stipule que : On Debian, administrators should usually use adduser(8) instead. useradd(8)consulte le fichier/etc/logins.defpour identifier le shell par défaut à positionner, et il s'agit de/bin/sh. Avecadduser(8), cela aurait été/bin/bash, d'après/etc/adduser.conf./bin/shest un lien vers bash, mais bash change de comportement lorsqu'il est invoqué avec le nomsh. D'après la page de man : If bash is invoked with the name sh, it tries to mimic the startup behavior of historical versions of sh as closely as possible.- Dans ce mode, la complétion fonctionne mal, et provoque le problème en question !
/bin/bash, et le problème est résolu !