Wie kann ich eine einzelne .bashrc-Datei für mehrere Benutzer festlegen?

30

während meiner arbeit muss ich bashrc ständig alias-befehle hinzufügen, die meisten dieser befehle müssen von anderen benutzern ausgeführt werden. kann ich einem bashrc alias-befehle von einer externen quelle hinzufügen?

user309584
quelle

Antworten:

40

Viele Konfigurationsdateien im Home-Verzeichnis des Benutzers überschreiben nur die im Home-Verzeichnis /etcdes Benutzers vorhandenen Einstellungen für GIMP ~/.gimp-2.*, wodurch die systemweite Konfiguration erweitert wird /etc/gimp/2.0.

Also für ~/.bashrc, können Sie das System bearbeiten breite Dateien Config /etc/bash.bashrc (für Funktionen / Aliase ) oder /etc/profile (für Umwelt Sachen) - Sie können die vollständige Liste von 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

Diese Warnung wird für einige Linux-Systeme in den Dateien angezeigt:

# 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.

Sie können diese Dateien also bearbeiten, sie zuerst sichern ( cp /etc/bash.bashrc /etc/bash.bashrc-backupzum Beispiel) oder ein Shell-Skript erstellen ( zum Beispiel /etc/profile.dmit den folgenden Befehlen (mit sudo / als root):

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

Dann öffne es mit nano /etc/profile.d/custom.sh

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

Und prüfen , ob es durch Sehen funktioniert , wenn es in der Ausgabe erscheint alias- Beachten Sie, dass Sie benötigen , um logout / login oder Neustart alle Änderungen zu sehen (wenn Sie wollen nicht, läuft source /etc/profilenach jeder Änderung funktionieren könnte)

[Bearbeiten: Toten Link entfernt] www.thelinuxdaily.com/2010/08/setup-a-universal-user-profile-with-etcprofile-dcustom-sh/]

Wilf
quelle
5
Es gibt viele gute Vorschläge. Ich denke, es gibt noch eine andere Option, die ebenfalls erwähnenswert wäre. Man kann bearbeiten /etc/skel/.bashrc, um zu ändern, wie der Inhalt ~/.bashrcfür neu erstellte Benutzer aussehen wird.
Kasperd
@kasperd - nette Idee (Sie könnten eine Antwort darauf machen, wenn Sie wollen)
Wilf
Nach meiner Erfahrung ~/.bash_logoutund /etc/bash.bash_logoutnicht funktionieren. :(
Paddy Landau
AFAIK-Alias ​​in /etc/profile.d/wird nicht vom Unterprozess erfasst, oder? Der Alias ​​ist also nur verfügbar, wenn Bash die Anmelde-Shell ist?
Franklin Yu
Ich denke, einige von ihnen funktionieren nur, wenn sie in einer TTY als einzige Umgebung verwendet werden. In einem Desktop-Terminal können einige von ihnen möglicherweise nicht verwendet werden. Ich müsste dies allerdings testen, um dies zu verifizieren und kann es im Moment nicht!
Wilf
7

Gehe zu /etc/bash.bashrc

vim /etc/bash.bashrc

und mache dort deinen Alias.

Fügen Sie Ihren Alias ​​in der letzten Zeile hinzu.

alias abc = "was auch immer"

Dieser Alias ​​wird für alle Benutzer global.

Aus Sicherheitsgründen empfehlen wir Ihnen dies jedoch nicht.

Es gibt ein profile.dVerzeichnis, das Benutzerumgebungsdateien enthält

gehe zu

cd /etc/profile.d/

vim Aliase

und fügen Sie hier Ihre Aliase hinzu.

ohne Auswirkungen auf Ihre Systemdateien. Es ist eine sichere und richtige Art, mit Ihren Umgebungsdateien zu arbeiten.

Dishank Jindal
quelle
3

Hier gibt es bereits eine akzeptierte Antwort, aber Sie könnten in Betracht ziehen, Umgebungsmodule für die systemweite Konfiguration von Benutzerumgebungen zu verwenden, anstatt mit den Dateien in /etc/profile.d usw. herumzuspielen. Dies gilt insbesondere dann, wenn Sie dies möchten Verwalten Sie diese Steuerung an einem Ort über viele Muscheln. Lmod (in sehr aktiver Entwicklung), C / TCL-Module (die klassische Lösung) oder Cmod (leichtgewichtig).

Bill Barth
quelle
1

Ich weiß nicht, ob ich es richtig mache, aber es funktioniert für mich, ein / home / ComunAtodos-Verzeichnis zu führen (in Großbuchstaben und in Spanisch, um zu verdeutlichen, dass es kein natives Linux-Verzeichnis ist) und .bashrc, .nanorc und .bash_aliases dort. Dann verweise ich auf diese in /etc/skel/.profile, damit neue Benutzer auf sie verweisen und nur bestimmten Benutzern Extras hinzufügen, die sie benötigen.

Fik der Borg
quelle
-1

Ich bin wirklich neu im Linux-Betriebssystem, aber ich habe eine Skizze eines Bash-Skripts erstellt, mit dem alle Benutzer die .bashrc-Datei und nicht die Systemdatei /etc/.bashrc ändern können.

#!/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

Okay, ich weiß, dass dieses Skript funktioniert, aber ich weiß es nicht, wenn es fehlerfrei ist :) Sie können es auch so ändern, dass nicht alle Benutzer daran beteiligt sind. Möglicherweise erstellen Sie eine Datei für alle Benutzer, die ihre .bashrc-Datei benötigen angepasst.

Farhad Rahimi
quelle
3
Die erste Zeile (in der Sie / etc / passwd lesen) scheint nichts zu tun. Ihre vierte Zeile scheint ein Fehler zu sein (und ich verstehe nicht, warum Sie Fehler unterdrücken möchten). "exit 0" ist redundant. Dies setzt .bashrcvoraus, dass alle Benutzer bereits über eine Datei verfügen , und hängt diese immer an, unabhängig davon, ob sich die Zeile bereits in ihrer Datei befindet.
Thomasrutter
Ich habe darüber nachgedacht, die Namen aller Benutzer mit dieser Zeile zu ermitteln. Aber jetzt, wo ich darüber nachdenke, könnte ich einfach schneiden </ etc / passwd, es gab eine Menge Namen auf dieser Liste, also wollte ich nicht, dass die IT-Abteilung Fehler für diejenigen macht, die keine bashrc-Datei haben. Wie kannst du nur anhängen, wenn die Zeile nicht existiert? Und könntest du das richtige Skript für diese Art von Aufgabe schreiben? Ich benutze Linux erst seit einer Woche.
Farhad Rahimi
Sieht so aus, als hättest du bereits einige Fähigkeiten, aber dieses Tutorial ist gut für Shell- Skripte geeignet : shellscript.sh . Bei anderen Fragen, wie zum Beispiel, wie eine Zeile nur angehängt wird, wenn sie noch nicht vorhanden ist, können Sie sie hier als neue Fragen stellen.
Thomasrutter