Ich habe durch Gerüchte gehört, dass Dateien in /etc/profile bei der Anmeldung automatisch von bash bezogen werden?
Ich habe versucht, etwas Einfaches in /etc/profile:
zu schreiben echo "echo 'foo'" > /etc/profile/foo.sh
aber ich habe diesen seltsamen Fehler:
bash: /etc/profile/foo.sh: Not a directory
Gibt es dafür einen korrekten Weg?
Akzeptierte Antwort:
/etc/profile
ist eine Datei. Daher der Fehler beim Versuch, /etc/profile/foo.sh
zu erstellen .
/etc/profile.d
ist das Verzeichnis, an das Sie denken. Dort platzierte Skripte werden bei der Anmeldung abgerufen. In Ihrem Beispiel möchten Sie /etc/profile.d/foo.sh
erstellen .
Die Skriptlogik dahinter und wie sie eingefügt wird, ist unten zu sehen. Ein ähnlicher Code befindet sich in /etc/profile
, /etc/bashrc
, /etc/csh.cshrc
und /etc/csh.login
.
$ grep -A 8 ^for.*profile.d /etc/profile
for i in /etc/profile.d/*.sh /etc/profile.d/sh.local ; do
if [ -r "$i" ]; then
if [ "${-#*i}" != "$-" ]; then
. "$i"
else
. "$i" >/dev/null
fi
fi
done
$
Beispiel für das Erstellen und Aufrufen eines solchen Skripts:
# echo id >/etc/profile.d/foo.sh
# su - steve
Last login: Sat Jun 23 21:44:41 UTC 2018 on pts/0
uid=1000(steve) gid=1001(steve) groups=1001(steve),4(adm),39(video),1000(google-sudoers) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
$
Weitere Informationen unter Was machen die Skripte in /etc/profile.d?