~ / .profile nie jest wykonywany po otwarciu terminala? [OS X 10.6.8]

4

Jakoś mój monit bash został zmieniony na „elementary: ~ steven $” i chcę go zmienić z powrotem na domyślny monit. Dodałem następujące do ~ / .bashrc, a następnie do ~ / .profile:

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

Ani nie wykonaj, gdy otworzę Terminal. Jeśli uruchomię polecenie sourcedla dowolnego pliku, będzie działało dobrze do końca tej sesji.

Czy coś tu przeoczam?

EDYCJA: Oto wyniki z sugestii Iana:

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
Steven Zezulak
źródło
Jaki był wcześniej domyślny monit? Czy mówisz o zmianie nazwy hosta na „elementarne”?
jsejcksn

Odpowiedzi:

5

.bashrc jest wykonywany tylko dla nieinteraktywnych powłok zgodnie ze stroną podręcznika bash.

.bash_profile jest wykonywany dla powłok logowania.

.profilePlik jest ładowany przez powłoki Korn. Nie wiem, czy bash w ogóle nie zwraca na to uwagi. Nie mogłem znaleźć żadnego odniesienia do tego na stronie podręcznika użytkownika bash.

W systemie OS X program Terminal.app uruchamia powłokę logowania dla każdego nowego otwieranego okna Terminal.app.

Więc chcesz wprowadzić szybką konfigurację .bash_profile.

Zawsze możesz wykonać następujące czynności .bash_profile. Nie jest to rzadkie, ale nie mogę powiedzieć, jakie mogą mieć następstwa:

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

Wtedy nie będziesz musiał utrzymywać dwóch plików.

Ian C.
źródło
Wciąż nie działa. Czy jest coś, co może to nadpisać?
Steven Zezulak
1
Możliwe, że bash jest wywoływany za pomocą --noprofilelub --norc. Spróbuj wykonać to po szybkim uruchomieniu: bash --login --verbose- czy drukuje coś użytecznego na temat tego, co działa? Ponadto: which bash- sprawdź, czy bashnie został skasowany.
Ian C.
Zaktualizowałem pierwszy post o wynik. Nie wygląda na to, żeby wykonywano coś interesującego lub zerującego.
Steven Zezulak,
1
Dodaj poniższe linie do początku ~/.bash_profilei ~/.bashrc: echo "Start of file $0". I na końcu każdego pliku: echo "End of file $0"a potem spróbuj bash --login --verbose- czy widzisz wynik z nich? Czy pliki są pozyskiwane zgodnie z oczekiwaniami?
Ian C.
2
.profile jest również odczytywany przez bash, ale tylko wtedy, .bash_profilegdy nie istnieje.
grawity
0

Mogę być niepoprawny, ale jeśli bash jest twoją powłoką, musisz umieścić ją w swoim ~ / .bash_profile, a nie w .bashrc.

Zameer Manji
źródło
0

Jeśli z jakiegoś powodu pomieszałeś z kontrolą bash i chcesz załadować swój TERMINAL .profile w każdej sesji ponownie, po prostu napisz ~ / .bash_profile w następujący sposób:

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

... i rozpocznij nową sesję, aby sprawdzić, czy wszystko wróciło OK

PYK
źródło