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

30

au cours de mon travail, je dois constamment ajouter des commandes d'alias à bashrc, la plupart de ces commandes doivent être exécutées par d'autres utilisateurs. est-il possible d'ajouter des commandes d'alias à un bashrc à partir d'une source externe?

user309584
la source

Réponses:

40

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

Donc, pour ~/.bashrc, vous pouvez modifier les fichiers de configuration à l'échelle du système /etc/bash.bashrc (pour les fonctions / alias ) ou /etc/profile (pour les éléments d'environnement) - vous pouvez la liste complète à partir de man bash:

FILES
       /bin/bash
              The bash executable
       /etc/profile
              The systemwide initialization file, executed for login shells
       /etc/bash.bash_logout
              The systemwide login shell cleanup file, executed when a login shell exits
       ~/.bash_profile
              The personal initialization file, executed for login shells
       ~/.bashrc
              The individual per-interactive-shell startup file
       ~/.bash_logout
              The individual login shell cleanup file, executed when a login shell exits
       ~/.inputrc
              Individual readline initialization file

Cet avertissement est donné pour quelques systèmes Linux dans les fichiers:

# It's NOT a good idea to change this file unless you know what you
# are doing. It's much better to create a custom.sh shell script in
# /etc/profile.d/ to make custom changes to your environment, as this
# will prevent the need for merging in future updates.

Vous pouvez donc modifier ces fichiers, vous pouvez les sauvegarder d'abord ( cp /etc/bash.bashrc /etc/bash.bashrc-backuppar 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, ouvrez-le avec nano /etc/profile.d/custom.sh

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

Et vérifiez si cela fonctionne en voyant s'il apparaît dans la sortie de alias- Notez que vous devrez peut-être vous déconnecter / vous connecter ou redémarrer pour voir les modifications (si vous ne le souhaitez pas, l'exécution source /etc/profileaprès que les modifications puissent fonctionner)

[modifier: supprimé ce lien mort] www.thelinuxdaily.com/2010/08/setup-a-universal-user-profile-with-etcprofile-dcustom-sh/]

Wilf
la source
5
Beaucoup de bonnes suggestions là-bas. Je pense qu'il y a une autre option, qui mérite également d'être mentionnée. On peut éditer /etc/skel/.bashrcpour changer à quoi ressemblera le contenu des ~/.bashrcutilisateurs nouvellement créés.
kasperd
@kasperd - bonne idée (vous pouvez y répondre si vous le souhaitez)
Wilf
D'après mon expérience, ~/.bash_logoutet /etc/bash.bash_logoutne fonctionne pas. :(
Paddy Landau
L'alias AFAIK ne/etc/profile.d/ sera pas récupéré par sous-processus, n'est-ce pas? Donc, l'alias n'est disponible que lorsque Bash est le shell de connexion?
Franklin Yu
Je pense que certains d'entre eux ne fonctionnent que lorsqu'ils sont utilisés dans, disons, un ATS comme seul environnement, dans un terminal de bureau, certains d'entre eux ne peuvent pas être utilisés. Je devrais tester cela pour le vérifier et je ne peux pas pour le moment!
Wilf
7

Aller à /etc/bash.bashrc

vim /etc/bash.bashrc

et faites votre alias là-bas.

ajoutez votre alias à la dernière ligne.

alias abc = "que ce soit"

Cet alias deviendra mondial pour tous les utilisateurs.

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

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

aller à

cd /etc/profile.d/

alias vim

et ajoutez vos alias ici.

sans affecter vos fichiers système. C'est une manière sûre et appropriée de travailler avec vos fichiers d'environnement.

Dishank Jindal
la source
3

Il existe déjà une réponse acceptée ici, mais vous pourriez envisager d'utiliser une certaine forme de modules d'environnement pour gérer la configuration à l'échelle du système des environnements utilisateur plutôt que de jouer avec les fichiers dans /etc/profile.d, etc. Cela est particulièrement vrai si vous voulez gérer ce contrôle en un seul endroit sur de nombreux obus. Lmod (en développement très actif), modules C / TCL (la solution classique) ou Cmod (léger).

Bill Barth
la source
1

Je ne sais pas si je le fais bien, mais cela fonctionne pour moi de garder un répertoire / home / ComunAtodos (en majuscule et en espagnol pour montrer qu'il ne s'agit pas d'un répertoire natif linux) et de mettre .bashrc, .nanorc et .bash_aliases là-bas. Ensuite, je fais référence à ceux dans /etc/skel/.profile pour que les nouveaux utilisateurs pointent vers eux, et n'ajoutent que des extras aux utilisateurs spécifiques qui en ont besoin.

Fik du borg
la source
-1

Je suis vraiment nouveau sur le système d'exploitation Linux, mais j'ai fait un croquis d'un script bash qui fonctionne pour modifier tous les fichiers .bashrc des utilisateurs et non le fichier système /etc/.bashrc.

#!/bin/bash

X=$( cat etc/passwd | cut -f1 -d: ) #All-users

For X in /home/*/.bashrc ; do 

echo "alias ls='ls -al'" >> $X

2>/dev/null

done

source $X

exit 0

D'accord, je sais que ce script fonctionne, mais je ne le fais pas s'il est sans défaut :) Vous pouvez également le modifier afin qu'il n'implique pas tous les utilisateurs, peut-être que vous créez un fichier pour tous les utilisateurs qui ont besoin de leur fichier .bashrc personnalisé.

Farhad Rahimi
la source
3
La première ligne (où vous lisez / etc / passwd) semble ne rien faire. Votre 4ème ligne semble être une erreur (et je ne vois pas pourquoi vous voudriez supprimer les erreurs). "exit 0" est redondant. Cela nécessite que tous les utilisateurs aient déjà un .bashrcfichier, et ajoute toujours indépendamment de si la ligne est déjà dans leur fichier.
thomasrutter
Je pensais obtenir les noms de tous les utilisateurs avec cette ligne? Mais maintenant que j'y pense, je pourrais simplement couper </ etc / passwd, il y avait beaucoup de noms sur cette liste, donc je ne voulais pas que l'informatique fasse des erreurs pour ceux qui n'ont pas bashrc filé. Comment pouvez-vous ajouter seulement si la ligne n'existe pas? Et pourriez-vous écrire le script approprié pour ce type de rask s'il vous plaît, je n'utilise Linux que depuis une semaine.
Farhad Rahimi
On dirait que vous avez déjà des compétences mais ce tutoriel est un bon outil pour l'écriture de scripts shell: shellscript.sh . Pour d'autres questions telles que la façon d'ajouter une ligne uniquement si elle n'existe pas déjà, n'hésitez pas à les poser en tant que nouvelles questions ici.
thomasrutter