2013-08-23 16 views
22

Mam uruchomione świeżo zainstalowane Arch Linux. Kiedy loguję się do użytkownika (z uruchomionym bash) i próbuję użyć aliasu z .bashrc, pojawia się błąd "nie znaleziono polecenia". Ale jeśli ponownie wprowadzę bash za pomocą polecenia "bash", polecenie działa dobrze.bashrc nie ładuje się, dopóki nie zostanie uruchomione polecenie bash

Tak, jestem już w bash.

env początkowo:

SHELL=/usr/bin/bash 

ENV po uruchomieniu bash, pozostaje:

SHELL=/usr/bin/bash 

Więc nie jestem pewien, gdzie jest problem.

+0

Jakiego używanego pisma? – lulyon

+0

Cóż, właściwie jest to funkcja: function cl() {cd $ @; ls} –

+0

Możliwe duplikaty: http://stackoverflow.com/a/415444/208997 – Simon

Odpowiedz

41

Przeczytaj sekcję WYWOŁYWANIE z "bash (1)", aby uzyskać pełne szczegóły (to jest strona man dla bash, użyj man bash). Twoja pierwsza powłoka po zalogowaniu to "powłoka logowania", co oznacza, że ​​plik .bashrc nie pochodzi z źródła. Twoje drugie wywołanie tworzy interaktywną powłokę, z której pochodzi źródło .bashrc.

Jeśli zawsze chcesz zawartość pliku .bashrc przetworzonej, można dodać następujące linie do pliku .bash_profile, tworząc ten plik jeśli nie istnieje:

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

Na jego stronie man bash "[...] szuka ~/.bash_profile, ~/.bash_login i ~/.profile, w tej kolejności, a także czyta i wykonuje polecenia od pierwszego, które istnieje i można je odczytać." Konwencje i zasady systemu lokalnego określają, które z tych plików już istnieją.

Jedna uwaga: należy pamiętać, że tworzenie nowego .bash_profile w swoim katalogu domowym może mieć niezamierzony efekt uboczny zapobiegania odczyt i wykonywanie poleceń w pliku .bash_login lub .profile już obecny, zmieniając dalsze zachowanie późniejsze loginy.

+4

I utwórz plik "~/.bash_login", jeśli jeszcze nie jest tutaj, –

+2

lub użyj '~/.profile' dla dowolnych powłok logowania zgodnych z Bourne. (bash) – Qwerty

+1

@Qwerty: jeśli utrzymujesz swoje środowisko, że ~/.bash_profile i ~/.bash_login nie istnieją, to działa ~/.profile. Od strony bash man wersji 4.2: "Kiedy bash jest wywoływany jako interaktywna powłoka logowania lub jako nieinteraktywna powłoka z opcją --login, najpierw odczytuje i wykonuje polecenia z pliku/etc/profile, jeśli ten plik istnieje po przeczytaniu tego pliku, szuka ~/.bash_profile, ~/.bash_login, i ~/.profile, w tej kolejności, i czyta i wykonuje polecenia od pierwszego, które istnieje i jest czytelne. " – sjnarv

5

Przeglądałeś już swoje pliki: ~/.profile, ~/.bash_login i ~/.bash_profile?

+2

Nie istnieją w tym momencie –

+2

Dzięki, zupełnie o tym zapomniałem. Nie przyzwyczajenie się do konieczności konfigurowania sprzętu dzięki systemowi Ubuntu. –

Powiązane problemy