GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie schreibe ich ein automatisch bezogenes Shell-Skript in /etc/profile?

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?


Linux
  1. CentOS / RHEL:So stellen Sie eine gelöschte /etc/passwd-Datei wieder her

  2. Hinzufügen von Benutzern zu sudoers durch Shell-Skript

  3. Zeile mit Shell-Skript an die Datei /etc/hosts anhängen

  4. Umgehen des in /etc/passwd angegebenen Befehls/Skripts

  5. Wie kann ich ein chmod im etc-Verzeichnis zurücksetzen?

So schreiben Sie ein Bash-Skript mit Beispielen

So verwenden Sie Variablen in Shell-Skripten

So schreiben Sie ein Shell-Skript in Ubuntu

Wie wird /etc/motd aktualisiert?

Wie stellt man /etc/profile wieder her?

Wie führe ich einen Befehl in einem Shell-Skript aus?