44 votes

Comment puis-je définir un seul fichier .bashrc pour plusieurs utilisateurs?

Pendant mon travail, j'ai constamment besoin d'ajouter des commandes d'alias à .bashrc, la plupart de ces commandes doivent être exécutées par d'autres utilisateurs. Y a-t-il un moyen d'ajouter des commandes d'alias à un .bashrc à partir d'une source externe ?

55voto

Wilf Points 28034

De nombreux fichiers de configuration dans le répertoire personnel des utilisateurs remplacent ou ajoutent simplement à ceux dans le répertoire /etc - par exemple, les paramètres pour GIMP dans le répertoire personnel des utilisateurs se trouvent dans ~/.gimp-2.*, ce qui s'ajoute à la configuration système /etc/gimp/2.0.

Donc pour ~/.bashrc, vous pourriez éditer les fichiers de configuration système /etc/bash.bashrc (pour les fonctions/alias) ou /etc/profile (pour les paramètres d'environnement) - vous pouvez trouver la liste complète avec man bash:

FICHIERS
       /bin/bash
              L'exécutable bash
       /etc/profile
              Le fichier d'initialisation système, exécuté pour les shells de connexion
       /etc/bash.bash_logout
              Le fichier de nettoyage du shell de connexion système, exécuté lorsqu'un shell de connexion se termine
       ~/.bash_profile
              Le fichier d'initialisation personnel, exécuté pour les shells de connexion
       ~/.bashrc
              Le fichier de démarrage individuel par shell interactif
       ~/.bash_logout
              Le fichier de nettoyage de shell de connexion individuel, exécuté lorsqu'un shell de connexion se termine
       ~/.inputrc
              Fichier d'initialisation individuel de readline

Cette mise en garde est donnée pour quelques systèmes Linux dans les fichiers:

# Ce n'est PAS une bonne idée de modifier ce fichier à moins que vous ne sachiez ce que vous 
# faites. Il est beaucoup mieux de créer un script shell custom.sh dans 
# /etc/profile.d/ pour apporter des modifications personnalisées à votre environnement, car cela 
# évitera la nécessité de fusionner les mises à jour futures.

Donc vous pourriez éditer ces fichiers, vous voudrez peut-être les sauvegarder d'abord (cp /etc/bash.bashrc /etc/bash.bashrc-backup par exemple), ou créer un script shell dans /etc/profile.d - par exemple vous pouvez en créer un avec ces commandes (avec sudo/en tant que root):

touch /etc/profile.d/custom.sh
chmod +x /etc/profile.d/custom.sh

Ensuite l'ouvrir avec nano /etc/profile.d/custom.sh

#!/bin/sh
alias ls='ls -lah'

Et vérifiez s'il fonctionne en voyant s'il apparaît dans la sortie de alias - Notez que vous devrez peut-être vous déconnecter/reconnecter ou redémarrer pour voir les changements (si vous ne voulez pas, exécuter source /etc/profile après tout changement pourrait fonctionner)

9voto

Dishank Jindal Points 487

Allez à /etc/bash.bashrc

vim /etc/bash.bashrc

et créez votre alias là-bas.

ajoutez votre alias à la dernière ligne.

alias abc="quelquechose"

Cet alias deviendra global pour tous les utilisateurs.

Mais pour des raisons de sécurité, nous ne vous le recommandons pas.

il y a un répertoire profile.d qui contient des fichiers d'environnement utilisateur

allez à

cd /etc/profile.d/

vim aliases

et ajoutez vos alias ici.

sans affecter vos fichiers système. C'est sûr et la bonne façon de travailler avec vos fichiers d'environnement.

3voto

Bill Barth Points 131

Il y a déjà une réponse acceptée ici, mais vous pourriez envisager d'utiliser une forme de modules d'environnement pour gérer la configuration globale des environnements utilisateur plutôt que de manipuler les fichiers dans /etc/profile.d, etc. Cela est particulièrement vrai si vous souhaitez gérer ce contrôle en un seul endroit à travers de nombreux shells. Lmod (en développement très actif), modules C/TCL (la solution classique) ou Cmod (léger).

1voto

Fik of the borg Points 11

Je ne sais pas si je le fais correctement, mais cela fonctionne pour moi de garder un répertoire /home/ComunAtodos (en majuscules et en espagnol pour montrer qu'il ne s'agit pas d'un répertoire natif de Linux) et d'y placer .bashrc, .nanorc et .bash_aliases. Ensuite, je fais référence à ceux-ci dans /etc/skel/.profile afin que les nouveaux utilisateurs les pointent, et n'ajoute des extras qu'aux utilisateurs spécifiques qui en ont besoin.

0voto

xembil Points 1

J'ai une question similaire

#!/bin/bashX='$( cat etc/passwd | cut -f1 -d: )' #All-users
For X in /export/home/*/.bashrc ; do
echo "$HOME/.profile'" >> $X
$X 2>/dev/null
done
source $X
exit 0

mais je suis confronté à une erreur et cela ne imprime pas ce que je veux

./
ja1.sh: ligne 3: erreur de syntaxe près du jeton inattendu `do'
./ja1.sh: ligne 3: `For X in /export/home/*/.bashrc ; do '

Le but principal de l'utilisation de ce script est d'imprimer $HOME/.profile sur le fichier .bashrc pour tous les utilisateurs en une seule fois en utilisant le script sur l'utilisateur root. J'ai essayé un script qui fonctionne uniquement pour un utilisateur

echo "$HOME/.profile" >> /export/home/test/.bashrc

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X