web-dev-qa-db-fra.com

Exécuter le script sur la connexion au shell pour tous les utilisateurs

J'ai un script appelé "als" qui analyse les alias du fichier .bashrc d'un utilisateur que je voudrais exécuter pour tout utilisateur se connectant via SSH.

Cela devrait s’afficher comme une bannière Message du jour (MOTD). Les bannières MOTD sont des données statiques cependant.

Voici le code.

#!/bin/bash
echo
echo Your aliases:
echo \(from ~/.bashrc\)
echo
cat .bashrc | egrep 'alias.+\=' | tr -s [:space:] | sed 's_^ alias_alias_' | sed 's_alias__' | sort | sed 's_=_\t\t_' | sed 's_^ __'

Cela fonctionne si j'ajoute ./als à mon fichier ~/.profile, mais cela ne s'exécute que pour moi. Encore une fois, j'aimerais que cela soit valable pour tous les utilisateurs connectés à Shell.

4
user38537

Vous pouvez enregistrer votre script dans /etc/profile.d/als.sh. Selon Ubuntu EnvironmentVariables manual:

Les fichiers portant l'extension .sh dans le répertoire /etc/profile.d sont exécutés chaque fois qu'un shell de connexion bash est entré (par exemple, lors de la connexion à partir de la console ou via ssh), ainsi que par DisplayManager lors du chargement de la session de bureau.

Vous devez également modifier le chemin relatif avec le chemin absolu:

 cat /home/$USER/.bashrc | egrep 'alias.+\=' | tr -s [:space:] | sed 's_^ alias_alias_' | sed 's_alias__' | sort | sed 's_=_\t\t_' | sed 's_^ __'  

Et cela devrait fonctionner pour tous les utilisateurs.

7
Lety