Ich habe mich ein wenig über den Start von Linux usw. informiert und mir ist aufgefallen, dass in meinem Home-Verzeichnis der folgende Ordner nicht vorhanden ist profile.d
:
/home/user/profile.d/ # Doesn't exists
und noch eine Datei .bash_profile
:
/home/user/.bash_profile # Doesn't exists
gibt es dafür einen Grund?
Ubuntu 15.04, Gnome
Antwort1
Kurze Antwort:es ist also ok.
Es gibt viele Initialisierungsbenutzerdateien, da ein Benutzer sich auf viele verschiedene Arten bei einem Computerkonto anmelden kann, von der Konsole aus, mit einer interaktiven oder einer nicht interaktiven Shell, mit verschiedenen Arten von Shells. Dies ist nicht das Vorrecht aller Benutzer, aber mit der Notwendigkeit, eineRückwärtskompatibilitätes endete damit, zu verkomplizierenein wenigdie Sachen. :-)
Ein Verzeichnis
profile.d
sollte sich nicht in Ihrem Home-Verzeichnis befinden:
/etc/profile.d
enthält Skripte mit anwendungsspezifischen Startdateien, die auch beim Start von der Shell ausgeführt werden. Es handelt sich um ein für alle Benutzer gültiges Verzeichnis, daher wird es unter dem/etc/
Pfad und nicht unter dem Home-Verzeichnis jedes einzelnen Benutzers angelegt.Die Datei
~/.bash_profile
ist eine der persönlichen Initialisierungsdateien und wird, sofern vorhanden, im Home-Verzeichnis jedes Benutzers gespeichert.Es ist jedoch nicht erforderlich, dass es existiert.Es sollte die Bash-spezifischen Befehle enthalten, die beim Starten einer Login-Shell ausgeführt werden sollen (~/.profile
kann auch von anderen Shells gelesen werden, die normalerweise eine andere Syntax als die Bash-Shell verstehen).
Lesen Sie mehr im INVOCATION
Abschnittman bash
Wenn Bash als interaktive Anmelde-Shell aufgerufen wird (...)es liest und führt zuerst Befehle aus der Datei aus
/etc/profile
, wenn diese Datei existiert.
Nach dem Lesen dieser Datei sucht es nach~/.bash_profile
,~/.bash_login
, und~/.profile
,in dieser Reihenfolge,und liest und führt Befehle vom ersten aus, der existiert und lesbar ist.
Wenn Sie also eine Datei haben, ~/.bash_profile
wird sie nicht gelesen ~/.profile
, wenn sie nicht in einer der anderen Dateien aufgerufen (oder als Quelle verwendet) wird.
Beachten Sie, dass
Wenn eine interaktive Shell gestartet wird, bei der es sich nicht um eine Anmelde-Shell handelt, liest und führt bash Befehle aus
/etc/bash.bashrc
und aus~/.bashrc
, sofern diese Dateien vorhanden sind.
Aus irgendeiner Version von Ubuntu 12 (und mit Sicherheit aus 13.10) .profile
stammt das ~/.bashrc
.
Dies kann beim Ausführen von Login-Shells (z. B. beim Einloggen
ssh
in den Computer) zu unerwartetem Verhalten führen, wo der Benutzer keine Quelle erwartet hätte~/.bashrc
.
Referenz:
- Im Bash (not so) Beginner Guide, der Abschnitt über dieShell-Initialisierungsdateien
- Warum ist die Standardquelle ~/.profile von Ubuntu ~/.bashrc?