Sonntag, 18. November 2012, 11:13 Uhr

bash Startup-Konfigurationsdateien unter Mac OS X

Wer seine Shell unter Mac OS X nach eigenem Gusto konfigurieren möchte, legt an eine oder mehrere der nachfolgenden Dateien Hand an — je nachdem, ob man Anpassungen systemweit (/etc/profile, /etc/bashrc) oder nur für den eigenen Benutzer eingerichtet haben möchte (~/.*; siehe unten).

Es muss dabei zwischen Login- und Non-Login-Shells unterscheiden werden. Was für einen Shell-Typ man gerade verwendet, findet sich ganz leicht mit folgendem Befehl heraus:

$ shopt | grep login_shell
login_shell    	on

Login-Shell

  1. /etc/profile
  2. Die erste existierende der folgenden Dateien (nur eine!):
    1. ~/.bash_profile
    2. ~/.bash_login
    3. ~/.login

Non-Login Shell

  1. /etc/bashrc
  2. ~/.bashrc

Quelle: What startup files are read by the shell? (shell configuration)

Soweit so gut … Die Sache wird nun aber noch weiter verkompliziert, indem man beim Login mit dem persönlichen Benutzer standardmässig eine bash-Shell vorgesetzt bekommt:

$ echo $SHELL
/bin/bash

Nachdem man aber mit sudo su zum root-Benutzer wechselt, hat man „nur“ noch eine sh-Shell:

# echo $SHELL
/bin/sh

Wie in einem SuperUser-Thread dargelegt handelt es sich bei /bin/sh seit Mac OS X 10.6 um ein bash-Binary, welches aber mit dem Flag -enable-strict-posix-default kompiliert wurde. Da sich aber /bin/sh wie ein Bourne Shell verhält, werden gar keine Konfigurationsdateien eingelesen:

Note that when bash is invoked with the name „sh“, it tries to mimic the startup sequence of the Bourne shell („sh“). In particular, a non-login shell invoked as „sh“ does not read any dot files by default. See the bash man page for details.

Quelle: What startup files are read by the shell? (shell configuration)

Fazit

Wer möchte, dass /etc/bashrc auch bei einem sudo su ausgeführt wird, muss die Login-Shell des root-Benutzers ändern:

# chsh -s /bin/bash root
Changing shell for root.

In den root-Benutzer wechselt man dann mittels

$ sudo -i

Tags: , , ,
Labels: Apple

Kommentar erfassen