J'ai entendu par la vigne que les fichiers dans /etc/profile seront automatiquement sourcés par bash lors de la connexion ?
J'ai essayé d'écrire quelque chose de simple dans /etc/profile :
echo "echo 'foo'" > /etc/profile/foo.sh
mais j'ai eu cette erreur bizarre :
bash: /etc/profile/foo.sh: Not a directory
existe-t-il une manière correcte de procéder ?
Réponse acceptée :
/etc/profile
est un fichier. D'où l'erreur lors de la tentative de création de /etc/profile/foo.sh
.
/etc/profile.d
est le répertoire auquel vous pensez. Les scripts qui y sont placés sont sourcés lors de la connexion. Dans votre exemple, vous voudriez créer /etc/profile.d/foo.sh
.
La logique de script derrière cela et comment elle est intégrée peut être vue ci-dessous. Un code similaire se trouve dans /etc/profile
, /etc/bashrc
, /etc/csh.cshrc
et /etc/csh.login
.
$ grep -A 8 ^for.*profile.d /etc/profile
for i in /etc/profile.d/*.sh /etc/profile.d/sh.local ; do
if [ -r "$i" ]; then
if [ "${-#*i}" != "$-" ]; then
. "$i"
else
. "$i" >/dev/null
fi
fi
done
$
Exemple de création et d'invocation d'un tel script :
# echo id >/etc/profile.d/foo.sh
# su - steve
Last login: Sat Jun 23 21:44:41 UTC 2018 on pts/0
uid=1000(steve) gid=1001(steve) groups=1001(steve),4(adm),39(video),1000(google-sudoers) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
$
Plus d'informations sur Que font les scripts dans /etc/profile.d ?