Jak przeładować?bashrc bez wylogowania i powrotu?
Jeśli wprowadzę zmiany w .bashrc
, Jak mogę ją przeładować bez wylogowania i ponownego zalogowania?
14 answers
Wystarczy wpisać komendę:
source ~/.bashrc
Lub możesz użyć krótszej wersji polecenia:
. ~/.bashrc
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)
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
lubsource ~/.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 stan są zachowane, który zawiera zmienne środowiskowe, Zmienne powłoki, opcje powłoki, funkcje powłoki i historię poleceń.
- Z wyjątkiem modyfikacji, które powoduje przeładowanie
-
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.
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
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ć.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 "
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
Alternatywy
source ~/.bashrc
exec bash
exec
polecenie zastępuje powłokę danym programem... - 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
2018-09-14 17:36:26
Typ:
source .bashrc
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
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
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.
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
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.
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ć.
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