bash.login

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
guennid

bash.login

Beitrag von guennid » 17.11.2017 19:21:56

Wovon hängt ab, ob diese Datei im Benutzerhome angelegt und wovon, dass sie ausgelesen wird?

Grüße, Günther

pferdefreund
Beiträge: 3791
Registriert: 26.02.2009 14:35:56

Re: bash.login

Beitrag von pferdefreund » 17.11.2017 19:34:21

Sollte in der Manpage von bash zu finden sein. Ist es auch ~/.bash_login, or ~/.profile. By default, bash reads these files when it is invoked as a login shell (see INVOCATION
below).

Bei solchen Fragen immer erst mal man befehl und dann kann man auch mit /suchbegriff in der Anzeige nach solchen Dingen suchen. Geht oft schneller, wie den Browser starten und hier was posten (Ist jetzt kein Vorwurf). Ob sie Angelegt wird, sollte das Installationsscript regeln. Und das kann je Distribution und bash-Version natürlich mal mit und mal ohne sein.

guennid

Re: bash.login

Beitrag von guennid » 17.11.2017 19:54:18

Hintergrund meiner Frage: 2x stretch, einmal von Debian-Version zu Debian-Version upgegradet, einmal frisch installiert. In der upgegradeten wird ein automatisierter X-Start via startx in ~/.profile ignoriert, in ~/.bash.login nicht. in dem frischen stretch gibt's gar kein ~/.bash.login. der Auto-X-login funktioniert via startx in ~/.profile. /etc/passwd sagt in beiden Fällen beim jeweiligen Benutzer: /bin/bash (ich nehme mal an als login shell).

Benutzeravatar
Livingston
Beiträge: 1363
Registriert: 04.02.2007 22:52:25
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: 127.0.0.1

Re: bash.login

Beitrag von Livingston » 18.11.2017 11:45:25

Je nachdem wie bash aufgerufen wird, wird auf verschiedene Dateien geprüft.
Für Login-Shells (direkte Anmeldung oder Script-Aufruf als

Code: Alles auswählen

bash --login
gilt:
Einbindung von /etc/profile
Danach Einbindung der ersten gefundenenen Datei aus der folgenden Liste:
~/.bash_profile
~/.bash_login
~/.profile

Für interaktive Nicht-Login-Shells:
Einbindung von /etc/bash.bashrc
Dann wie oben Test auf:
~/.bashrc

Wird die bash als sh aufgerufen (wenn also sh ein Link auf bash ist), gilt das "historische Verhalten" einer bourne-shell:
Als Login-Shell werden wie open /etc/profile und ~/.profile eingebunden.
Als einfache Shell wird die Variable $ENV ausgewertet und eine evtl. vorhandene Datei eingebunden.

Außerdem gibt es noch einige mögliche Ausnahmen durch Parameter und Umgebungsvariablen. Für den Hausgebrauch sollte das hier aber erst mal reichen.
Oft bindet man die ~/.bashrc (oder beliebige andere Startup-Scripte) auch in eine Login-Shell ein, indem man sie in der ~/.profile mit

Code: Alles auswählen

. ./.bashrc
oder

Code: Alles auswählen

source ./.bashrc
aufruft.

guennid

Re: bash.login

Beitrag von guennid » 18.11.2017 12:18:45

Danke sehr! Das erklärt, wieso startx in ~/.profile nicht ausgeführt wird, wenn eine ~/.bash.login existiert - richtig? :wink:

Benutzeravatar
Livingston
Beiträge: 1363
Registriert: 04.02.2007 22:52:25
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: 127.0.0.1

Re: bash.login

Beitrag von Livingston » 18.11.2017 16:48:16

So isses! :mrgreen:
Das fragliche Teil heißt aber nicht ~/.bash.login sondern ~/.bash_login mit Unterstrich statt Punkt. Mit den Bezeichnungen gerät man leicht ins Schleudern, weil in /etc noch /etc/bash.bashrc rumgammelt. Bin da früher auch gerne drauf reingefallen.

EDIT: Ergänzung
Du kannst ja mit

Code: Alles auswählen

source ~/.profile
die Datei .profile in ~/.bash_login aufrufen. Am Ende ist es fast Geschmackssache, wie man das aufbaut. Wenn Du jedoch verschiedene Shells im Einsatz hast, kann es natürlich noch andere rc-Dateien oder Startscripte geben, und Du musst genau hinschauen, welche shell mit welchen Startscripts gefüttert wird. Das kann u.U. ganz schön unübersichtlich werden.

Antworten