
Ich möchte ein RPM verpacken, installieren und deinstallieren, das beim Start aller interaktiven Shells für alle Benutzer (eigentlich zumindest sowohl bei der Bash-SSH-Sitzung als auch beim Bash-Gnome-Terminal) eine kontextbezogene Warnmeldung hinzufügen kann. Grundsätzlich würde der Code die Warnmeldung anzeigen, wenn eine Datei fehlt.
Nun, die Kandidaten sind /etc/bashrc
, /etc/profile
, /etc/profile.d/myscript.sh
, /etc/skel/.bash_profile
, /etc/skel/.bashrc
.
Am einfachsten wäre es, etwas in zu installieren, /etc/profile.d
aber das erfüllt nicht wirklich meine Anforderungen (SSH-Bash-Sitzung).
Ich denke, der richtige Ort ist /etc/skel/.bashrc + exisiting .bashrc
, aber ich fühle mich nicht sicher dabei, meinen Code an diese Dateien anzuhängen/aus diesen Dateien zu entfernen … Ich verstehe das so: yum
und rpm
legt und entfernt Dateien; sie sind nicht dafür ausgelegt, Textdateien sicher zu ändern.
Ich hätte gerne so etwas wie /etc/bashrc.d/
…
Wo soll ichsicher installierendie Warnmeldung, damit sie in allen interaktiven Shells verfügbar ist undsicher deinstalliert? Mit sicher meine ich, ohne etwas Unerwünschtes zu löschen.
Antwort1
Die Datei /etc/bashrc
ist %config(noreplace)
im setup
RPM als Datei gekennzeichnet. Das bedeutet, dass, wenn Sie sie aktualisieren yum
,nichtersetzen. Wenn beim Upgrade eines Pakets ein aktualisiertes vorhanden ist /etc/bashrc
, yum
wird erstellt /etc/bashrc.rpmnew
. SiedürfenSie können es bei Bedarf sicher ändern.
Aber es scheint, dass das nicht notwendig ist. Werfen Sie einen Blick auf /etc/bashrc
Ihr CentOS/Rhel/Fedora/usw.-System und Sie werden Folgendes finden:
if ! shopt -q login_shell ; then # We're not a login shell
[...]
for i in /etc/profile.d/*.sh; do
if [ -r "$i" ]; then
if [ "$PS1" ]; then
. "$i"
else
. "$i" >/dev/null
fi
fi
done
[...]
Dieser Code stellt sicher, dass die Dateien /etc/profile.d
sowohl für Login-Shells (in diesem Fall werden sie /etc/profile
stattdessen von ausgeführt) als auch für Nicht-Login-Shells (in diesem Fall übernimmt diese Schleife ihre Ausführung) ausgeführt werden.
Mit anderen Worten, Siebereitshabe ein /etc/bashrc.d
, und es heißt /etc/profile.d
.