Jak przeładować?bashrc bez wylogowania i powrotu?

Jeśli wprowadzę zmiany w .bashrc, Jak mogę ją przeładować bez wylogowania i ponownego zalogowania?

Author: shgnInc, 2010-03-25

14 answers

Wystarczy wpisać komendę:

source ~/.bashrc

Lub możesz użyć krótszej wersji polecenia:

. ~/.bashrc
 2017
Author: George Hawkins,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-09 17:47:54

Or you could use;

exec bash
Robi to samo. (i łatwiej zapamiętać, przynajmniej dla mnie)

exec polecenie zastępuje powłokę podanym programem, w naszym przykładzie zastępuje powłokę bash (z zaktualizowanymi plikami konfiguracyjnymi)

 202
Author: WhoSayIn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-01 08:59:00

Do uzupełniaj i kontrastuj dwie najpopularniejsze odpowiedzi, . ~/.bashrc oraz exec bash:

Oba rozwiązania skutecznie reload ~/.bashrc, ale są różnice:

  • . ~/.bashrc lub source ~/.bashrc będzie zachowaj swoją obecną powłokę :

    • Z wyjątkiem modyfikacji, które powoduje przeładowanie ~/.bashrc do aktualnej powłoki (sourcing), obecna powłoka i jej stanzachowane, który zawiera zmienne środowiskowe, Zmienne powłoki, opcje powłoki, funkcje powłoki i historię poleceń.
  • exec bash, lub bardziej solidnie, exec "$BASH"[1], Wola zastąp swoją obecną powłokę nową instancją, a zatem tylko zachowuje bieżące zmienne środowiskowe powłoki ( w tym te, które zdefiniowałeś ad-hoc).

    • innymi słowy: wszelkie zmiany ad hoc do aktualnej powłoki pod względem zmiennych powłoki, funkcji powłoki, opcji powłoki, historii poleceń są tracone.

W zależności od potrzeb, jedno lub drugie podejście może być preferowane.


[1] exec bash może teoretycznie wykonać inny bash wykonywalny niż ten, który uruchomił bieżącą powłokę, jeśli zdarzy się, że istnieje w katalogu wymienionym wcześniej w $PATH. Ponieważ specjalna zmienna $BASH zawsze zawiera pełną ścieżkę plik wykonywalny, który uruchomił bieżącą powłokę, exec "$BASH" ma gwarancję użycia tego samego pliku wykonywalnego .
Uwaga re "..." wokół $BASH: podwójne cytowanie zapewnia, że wartość zmiennej jest używana tak,jak jest, bez interpretacji przez Basha; jeśli wartość nie ma osadzonych spacji lub innych metacharakterów powłoki (co nie jest prawdopodobne w tym przypadku), nie potrzebujesz ściśle podwójnych cudzysłowów, ale używanie ich jest dobrym nawykiem do tworzenia.

 78
Author: mklement0,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-13 01:27:54

Ktoś edytował moją odpowiedź, aby dodać niepoprawny angielski, ale tutaj był oryginał, który jest gorszy od zaakceptowanej odpowiedzi.

. .bashrc
 43
Author: Randy Proctor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-25 13:26:56

W zależności od otoczenia, wystarczy wpisać

bash
Może również działać.
 15
Author: James,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-08 11:51:51

Z tym, nie będzie nawet trzeba wpisać " source ~/.bashrc": {]}

Dołącz swój plik bashrc:

alias rc="vim ~/.bashrc && source ~/.bashrc"

Za każdym razem, gdy chcesz edytować bashrc, po prostu uruchom alias " RC "

 13
Author: Roy Lin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-26 22:24:02
. ~/.bashrc

. jest wbudowanym standardem POSIX


Alternatywy

source ~/.bashrc

source jest synonimem kropki/kropki . w bash, ale nie w POSIX sh, więc dla maksymalnej kompatybilności użyj kropki.

exec bash
  • exec polecenie zastępuje powłokę danym programem... - WhoSayIn
 6
Author: Geoffrey Hale,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-14 17:36:26

Typ:

source .bashrc
 3
Author: jwismar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-03-25 18:00:15

Używam następującego polecenia na msysgit

. ~/.bashrc

Krótsza wersja

source ~/.bashrc
 2
Author: Sojan V Jose,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-02 20:32:33

To też zadziała..

cd ~
source .bashrc
 1
Author: kirti,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-21 19:16:52

Zauważyłem, że polecenie pure exec bash zachowa zmienne środowiskowe, więc musisz użyć exec -c bash, aby uruchomić Basha w pustym środowisku.

Na przykład logujesz się do Basha, a export A=1, jeśli exec bash, A == 1.

Jeśli exec -cl bash, A jest pusty.

Myślę, że to najlepszy sposób na wykonywanie swojej pracy.
 0
Author: CatDog,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-22 13:53:48

Dla mnie to co działa gdy zmieniam ścieżkę to: exec "$BASH" --login

 0
Author: Cecília Regina,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-08 20:13:16

W zależności od środowiska, możesz chcieć dodać skrypty do have .bashrc ładuje się automatycznie po otwarciu sesji SSH. Niedawno zrobiłem migrację na serwer z systemem Ubuntu, i tam, .profil, nie .bashrc lub .bash_profile jest ładowany domyślnie. Aby uruchomić skrypty w .bashrc, musiałem uruchamiać source ~/.bashrc przy każdym otwarciu sesji, co nie pomaga przy uruchamianiu zdalnych wdrożeń.

Mieć swoje .bashrc ładuje się automatycznie podczas otwierania sesji, spróbuj dodać to do .profil:

if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
        . "$HOME/.bashrc"
    fi
fi

Otwórz ponownie sesję, a powinna ona załadować wszystkie ścieżki / skrypty, w których się znajdujesz .bashrc.

 0
Author: karolus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-10-04 12:11:49

Ja osobiście mam

alias ..='source ~/.bashrc'

W moim bashrc, tak, że mogę po prostu użyć ".."żeby ją przeładować.

 -2
Author: Flo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-20 03:49:20