
bash
wird nicht .bashrc
von einem interaktiven Terminal bezogen, es sei denn, ich führe es manuell bash
von einem Terminal aus:
$ bash
oder geben Sie die Quelle manuell ein:
$ source ./.bashrc
oder ausgeführt:
$ st -e bash
Hier sind einige hoffentlich nützliche Ergebnisse:
$ echo $TERM
st-256color
$ echo $SHELL
/bin/sh
$ readlink /bin/sh
bash
$ shopt login_shell
login_shell off
Ich verwende CRUX Linux 3.0 und dwm
. st
Ich habe versucht, .bash_profile
und zu verwenden, jedoch .profile
ohne Erfolg.
Irgendwelche Ideen?
Antwort1
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
Antwort2
Warum sollte es als Quelle verwendet werden? Ihre Standard-Shell ist nicht Bash, sondern sh
:
$ echo $SHELL
/bin/sh
In den meisten modernen Systemen sh
handelt es sich um einen symbolischen Link zu einer Basis-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
handelt es sich jedoch um einen Link zu bash
, wie in erläutert man bash
:
Wenn bash mit dem Namen sh aufgerufen wird, versucht es, das Startverhalten früherer Versionen von sh so genau wie möglich nachzuahmen und gleichzeitig den POSIX-Standard einzuhalten. [...] Wenn bash als interaktive Shell mit dem Namen sh aufgerufen wird, sucht es nach der Variable ENV, erweitert ihren Wert, falls er definiert ist, und verwendet den erweiterten Wert als Namen einer zu lesenden und auszuführenden Datei. DaEine als sh aufgerufene Shell versucht nicht, Befehle aus anderen Startdateien zu lesen und auszuführen., die Option --rcfile hat keine Wirkung.
Und
--norc
Liest und führt 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 ist sh
, .bashrc
wird nicht gelesen. Stellen Sie Ihre Standard-Shell einfach mit auf Bash ein chsh -s /bin/bash
.