Za każdym razem, gdy otwieram nową kartę w Terminalu za pomocą Cmd+ T, otwiera się bash w tym samym katalogu, co poprzednia karta. Działa to dobrze, gdy jestem w ~
katalogu, ale jeśli jestem w innym miejscu, pojawia się błąd podczas ładowania.bashrc
Last login: Sat Oct 15 21:10:00 on ttys002
-bash: .bashrc: No such file or directory
Jakub-Arnolds-MacBook-Pro:projects darth$
Wygląda na to, że .bashrc
jest ładowany przez ścieżkę względną, a nie bezwzględną, ponieważ jeśli to zrobię source ~/.bashrc
, wszystko działa płynnie.
Myślę, że jest to problem związany z systemem OS X Lion, ponieważ przed aktualizacją ze Snow Leopard nie miałem tego samego problemu. Ale może to być spowodowane tym, że Terminal zawsze otwierał się o godzinie ~
, nie pamiętam, czy próbował otworzyć ten sam katalog.
Jednak pytanie pozostaje takie samo, jak mogę dokonać obciążenia terminala ~/.bashrc
za pomocą ścieżki bezwzględnej, a nie względnej?
Odpowiedzi:
Terminal otwiera powłokę logowania. Oznacza to, że
~/.bash_profile
zostanie wykonany, a~/.bashrc
nie.W większości systemów rozwiązaniem jest „wymaganie” wpisu
~/.bashrc
in the~/.bash_profile
: wystarczy umieścić ten fragment w swoim~/.bash_profile
:źródło
[[ -s /file/path ]]
to robi? Próba uzyskania wyjaśnień w Google nie jest łatwa.man bash
: -s plik Prawda, jeśli plik istnieje i ma rozmiar większy niż zero.man bash
) mówi o tym i wyjaśnia to, rozdział WYWOŁANIE (po prostu wyszukajINVOCATION
po zadzwonieniuman bash
, wpisując/INVOCATION
)Zmiana nazwy
.bashrc
na.profile
(lub miękkie połączenie tej drugiej z pierwszą) również powinna załatwić sprawę. Zobacz tutaj .źródło
cd && ln -s ./.bashrc ./.profile
Zauważ, że dowiązania symboliczne są wrażliwe w odniesieniu do ścieżki pliku, uważam, że użycie powyższej składni działa, ale aby mieć pewność, że możesz używać ścieżek bezwzględnych w każdym przypadku..profile
regularnośćsh
.Mam w moim
~/.bash_profile
:Gdybym miał
.bashrc
zamiast~/.bashrc
, zobaczyłbym ten sam objaw, który widzisz.źródło