Der PS1
Shell-Variable sollte in ~/.bashrc
gesetzt werden für die bash
Shell, da dies die Initialisierungsdatei ist, die für interaktive Shell-Sitzungen gelesen wird.
Beachten Sie, dass diese Variable eine Shell-Variable ist , keine Umgebungsvariable (es macht keinen Sinn, untergeordnete Prozesse ihren Wert erben zu lassen, und es ist nur die aktuelle Shell, die sie verwendet). Es muss daher nicht mit export
exportiert werden .
Verwandte:
- Was ist der Zweck von .bashrc und wie funktioniert es?
Sie sollten bash
nicht starten müssen aus einer der Startdateien der Shell. Starten einer bestimmten Shell von ~/.profile
(oder die entsprechende Datei, die sich auf Ihre Login-Shell bezieht) möglicherweise gerechtfertigt, wenn das System, auf dem Sie laufen, es Ihnen nicht erlaubt, Ihre Login-Shell zu ändern. Es sollte nicht darauf geachtet werden Starten Sie die andere Shell, wenn dies die Shell ist, die die Datei bereits ausführt, oder Sie landen möglicherweise in einer Art Endlosschleife.
Die exec
Code, den Sie zu Ihrem ~/.bash_profile
hinzufügen sollte nie benötigt werden. Ich nehme an, es ist eine Möglichkeit, ~/.bashrc
zu bekommen geparst werden (es startet eine interaktive Shell und interaktive bash
Shells lesen ~/.bashrc
). Ein besserer Weg, dies zu tun, wäre, eine der Dateien als Quelle für die andere zu verwenden, beispielsweise indem Sie dies in ~/.bash_profile
verwenden :
if [[ -f $HOME/.bashrc ]]; then
source "$HOME/.bashrc"
fi
Stellen Sie dann PS1
ein in ~/.bashrc
(Es sollte nicht nötig sein, HOME
zu berühren oder TERM
).
Außerdem löscht der Befehl alle anderen Umgebungsvariablen mit env -i
. Es sei denn, Sie haben ganz besondere Gründe Um dies zu tun, sollten Sie dies nicht von Ihren normalen Shell-Startdateien aus tun.
Um aus der Bash-Manpage zu zitieren:
When bash is invoked as an interactive login shell, or as a non-interactive
shell with the --login option, it first reads and executes commands from the
file /etc/profile, if that file exists. After reading that file, it looks
for ~/.bash_profile, ~/.bash_login, and ~/.profile, in that order, and reads
and executes commands from the first one that exists and is readable. The
--noprofile option may be used when the shell is started to inhibit this
behavior.
When a login shell exits, bash reads and executes commands from the file
~/.bash_logout, if it exists.
When an interactive shell that is not a login shell is started, bash reads
and executes commands from /etc/bash.bashrc and ~/.bashrc, if these files
exist. This may be inhibited by using the --norc option. The --rcfile file
option will force bash to read and execute commands from file instead of
/etc/bash.bashrc and ~/.bashrc.
Es hängt also sehr davon ab, wie Sie die Shell starten.
- Wenn Sie Ihren
PS1
haben möchten aktiv in allen Logins Shells (z.B. übersu - <user>
oder beim Remote-Login überssh
), legen Sie es im Profil ab . - Wenn Sie Ihren
PS1
haben möchten aktiv in allen Nicht-Login Shells (z. B. einfach ein anderes Terminal in Ihrer Desktop-Umgebung öffnen), in bashrc einfügen . - Wenn Sie es in beiden Fällen aktiv haben möchten, müssen Sie es in beide Dateien einfügen, oder (was einige Linux-Varianten zumindest im Fall des systemweiten /etc/profile und /etc/bash.bashrc ), beziehen Sie die .bashrc im .profil .
PS1
sollte in .bashrc
sein . Sie könnten es auch in .profile
setzen .
Debian bezieht .bashrc von dort:
# if running bash
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi