~/.profile wird beim Öffnen des Terminals nicht ausgeführt?

~/.profile wird beim Öffnen des Terminals nicht ausgeführt?

Irgendwie wurde meine Bash-Eingabeaufforderung in „elementary:~ steven$“ ​​geändert und ich möchte sie wieder auf die Standardeingabeaufforderung zurücksetzen. Ich habe Folgendes zuerst zu ~/.bashrc und dann zu ~/.profile hinzugefügt:

export PS1="\s-\v\$ "

Keines von beiden wird ausgeführt, wenn ich Terminal öffne. Wenn ich den Befehl sourcefür eine der Dateien ausführe, funktioniert er für den Rest der Sitzung einwandfrei.

Übersehe ich hier etwas?

BEARBEITEN: Hier ist die Ausgabe von Ians Vorschlag:

elementary:~ steven$ bash --login --verbose
# System-wide .profile for sh(1)

if [ -x /usr/libexec/path_helper ]; then
    eval `/usr/libexec/path_helper -s`
fi
/usr/libexec/path_helper -s
PATH="/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/Library/Frameworks/Python.framework/Versions/3.2/bin:/usr/local/AVRMacPack/bin"; export PATH;

if [ "${BASH-no}" != "no" ]; then
    [ -r /etc/bashrc ] && . /etc/bashrc
fi
# System-wide .bashrc file for interactive bash(1) shells.
if [ -z "$PS1" ]; then
   return
fi

PS1='\h:\W \u\$ '
# Make bash check its window size after a process completes
shopt -s checkwinsize
if [ -e "/usr/local/AVRMacPack" ]; then
PATH="$PATH:/usr/local/AVRMacPack/bin"
export PATH
fi

# Setting PATH for Python 3.2
# The orginal version is saved in .bash_profile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/3.2/bin:${PATH}"
export PATH
elementary:~ steven$ which bash
which bash
/bin/bash

Antwort1

.bashrcwird gemäß der Bash-Manpage nur für nicht-interaktive Shells ausgeführt.

.bash_profilewird für Login-Shells ausgeführt.

Die .profileDatei wird von Korn-Shells geladen. Ich weiß nicht, ob Bash darauf überhaupt achtet. Ich konnte auf der Manpage von Bash keinen Hinweis darauf finden.

Unter OS X führt das Programm Terminal.app für jedes einzelne neue Terminal.app-Fenster, das Sie öffnen, eine Anmelde-Shell aus.

Sie möchten also Ihr Prompt-Setup in einfügen .bash_profile.

Sie können in immer Folgendes tun .bash_profile. Das ist nicht ungewöhnlich, aber ich kann nicht sagen, welche Auswirkungen es haben könnte:

if [ -f ~/.bashrc ]; then
   source ~/.bashrc
fi

Dann müssten Sie nicht zwei Dateien pflegen.

Antwort2

Ich könnte mich irren, aber wenn Bash Ihre Shell ist, müssen Sie das in Ihrem ~/.bash_profile und nicht in Ihrer .bashrc platzieren.

Antwort3

Falls Sie mit IhremBash-Steuerungaus irgendeinem Grund und Sie möchten Ihr TERMINAL laden.Profilin jeder Sitzung wieder, schreiben Sie einfach Ihre~/.bash_profileetwa so:

if [ -f ~/.profile ]; then
   source ~/.profile
fi

... und starten Sie eine neue Sitzung, um zu prüfen, ob alles wieder in Ordnung ist

verwandte Informationen