Stellen Sie in .bash_profile sicher, dass Sie Folgendes haben:
# .bash_profile
# If .bash_profile exists, bash doesn't read .profile
if [[ -f ~/.profile ]]; then
. ~/.profile
fi
# If the shell is interactive and .bashrc exists, get the aliases and functions
if [[ $- == *i* && -f ~/.bashrc ]]; then
. ~/.bashrc
fi
Warum sollte es es beziehen? Sie führen nicht den wahren bash
aus :
$ echo $SHELL
/bin/sh
In den meisten modernen Systemen sh
ist ein symbolischer Link zu einer einfachen Shell. Auf meinem Debian zum Beispiel:
$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Aug 1 2012 /bin/sh -> dash
In Ihrem Fall sh
ist ein Link zu bash
aber wie in man bash
erklärt :
Wenn bash mit dem Namen sh aufgerufen wird, versucht es, das Startverhalten historischer Versionen von sh so genau wie möglich nachzuahmen, während es sich auch an den POSIX-Standard hält. [...] Wenn Bash als interaktive Shell mit dem Namen sh aufgerufen wird, sucht sie nach der Variablen ENV, erweitert ihren Wert, wenn sie definiert ist, und verwendet den erweiterten Wert als Namen einer zu lesenden und auszuführenden Datei. Da eine als sh aufgerufene Shell nicht versucht, Befehle aus anderen Startdateien zu lesen und auszuführen , hat die Option --rcfile keine Auswirkung.
und
--norc
Lesen und führen Sie die systemweite Initialisierungsdatei /etc/bash.bashrc und die persönliche Initialisierungsdatei ~/.bashrc nicht aus, wenn die Shell interaktiv ist. Diese Option ist standardmäßig aktiviert, wenn die Shell als sh aufgerufen wird.
Da Ihre Standard-Shell also sh
ist , .bashrc
wird nicht gelesen. Stellen Sie einfach Ihre Standard-Shell mit chsh -s /bin/bash
auf bash ein .