Co robi . .bashrc faktycznie zrobić?

13

Kiedy wpisuję np. nowy alias do mojego .bashrcpliku Nie mogę go natychmiast użyć w tym oknie terminala i do niedawna myślałem, że muszę ponownie uruchomić terminal, aby ponownie załadować .bashrcplik. Potem dowiedziałem się gdzieś, że jeśli napiszę

. .bashrc

spowoduje to ponowne załadowanie .bashrcpliku w bieżącym oknie i nie muszę restartować. To działa na płetwy, ale co się właściwie dzieje? Dlaczego to ponownie ładuje .bashrcplik?

Łopata
źródło
1
Za pomocą .„źródło” pliku. Oznacza to, że jest wykonywany w zasadzie
Der Hochstapler
możliwy duplikat Co robi źródło?
Dan D.
1
@DanD. choć odpowiedź jest taka sama, pytanie brzmi dla mnie zupełnie inaczej.
Calimo
1
@Dan D. to pytanie dotyczy bardziej mężczyzn . . Do tej pory zawsze o tym myślałem . jako skrót do bieżącego katalogu i .. jako skrót do katalogu nadrzędnego. Nigdy nie zdawałem sobie sprawy . był pseudonimem dla źródła (co z kolei było dla mnie zupełnie nową koncepcją). Jeśli ktoś tu przychodzi i chce poznać różnicę, którą znalazłem Jaka jest różnica między uruchomieniem skryptu bash a pozyskiwaniem skryptu bash? być bardzo pomocnym.
Spade

Odpowiedzi:

17

Ponieważ .jest to polecenie.

Jest to wbudowane polecenie powłoki, które odczytuje nazwany plik i wykonuje polecenia znajdujące się w nim w bieżącym procesie powłoki.

Powłoka Bourne Again ma również sourcejako synonim tego polecenia. Ale to jest Bashizm (który pocisk Bourne Again wziął z Powłoki C.) Chociaż jest to Bashizm, który skorupa Bourne Again dzieli z Powłoką TENEX C, Powłoką Z i innymi (ale nie pociskiem Korna, uwaga). Pojedyncza specyfikacja UNIX tylko się standaryzuje ..

Zauważ też, że zachowanie ./ sourcesubtelnie zmienia się w zależności od tego, czy powłoka Bourne Again jest uruchomiona w trybie zgodnym z POSIX, czy nie. (Znowu jest to podobne do innych powłok, chociaż ich niestandardowe zachowania nie są takie same jak w przypadku innych. W przypadku Z Shell na przykład istnieje wstępnie skompilowany mechanizm skryptu powłoki i sourcesubtelnie różni się od .obsługi ścieżki wyszukiwania. Korn powłoki .uruchomią funkcje powłoki, na przykład).

~/.bashrcjest tylko jednym z kilku plików, których zawartość (zależna od sposobu wywołania procesu powłoki) jest automatycznie pozyskiwana podczas uruchamiania powłoki. Nic nie zabrania ręcznego pozyskiwania. Chociaż jeśli jego działania nie są idempotentne, możesz mieć trochę pracy związanej z naprawą.

Dalsza lektura

JdeBP
źródło
1

help . powiedziałbym ci:

.: . filename [arguments]

Execute commands from a file in the current shell.

Read and execute commands from FILENAME in the current shell.  The
entries in $PATH are used to find the directory containing FILENAME.
If any ARGUMENTS are supplied, they become the positional parameters
when FILENAME is executed.

Exit Status:
Returns the status of the last command executed in FILENAME; fails if
FILENAME cannot be read.

Powiedzenie . .bashrcwykonuje (źródła) plik, .bashrcktóry udostępnia zmiany dokonane w pliku w bieżącej sesji.

Domyślnie ~/.bashrcbędzie czytany przy logowaniu.

.jest synonimem source.

diabelnie
źródło
1

.Komenda jest to samo, co w sourcepoleceniu, który wykonuje swój .bashrcplik. Dodaje to wszystkie zdefiniowane aliasy i wszelkie inne ustawienia / zmienne powłoki do bieżącego środowiska. Ze sourcestrony pomocy:

source: source filename [arguments]
    Execute commands from a file in the current shell.
ethanwu10
źródło