Jak ponownie zainicjować okno terminala zamiast go zamknąć i rozpocząć nowe?

49

Kiedy wprowadzam pewne zmiany w zachowaniu powłoki / bash, takie jak konfigurowanie aliasu, czy istnieje szybkie polecenie, aby ponownie zainicjować okno terminala zamiast zamykać i otwierać nowe okno?

NES
źródło

Odpowiedzi:

51

Jeśli masz na myśli ponowne załadowanie konfiguracji .bashrc, to:

source ~/.bashrc

Aby mniej pisać, możesz zastąpić sourcekropką:. ~/.bashrc

narkisr
źródło
2
Oto pytanie, jak to się zachowuje inaczej niż source ~/.bashrc?
krytyczny
Nie ma Patrząc na stronę podręcznika użytkownika bash zobaczysz, że polecenia są wymienione jako równoważne.
Carsten Thiel,
2
sourcejest specyficzny dla bash. .jest bardziej standardowy. Oba działają tak samo w bash.
Michael Terry
1
To po prostu ponownie ładuje PATH i niektóre zmienne środowiskowe. Niczego nie „resetuje”. @ Odpowiedź NES jest poprawna.
Cerin
2
To niczego nie resetuje, jeśli masz aktualizacje ŚCIEŻKI, teraz będziesz mieć swoje stare aktualizacje i nowe aktualizacje.
Constantin
39

Niektóre dodatki znalazłem na stronie podręcznika z polecenia reset / tset

resetowanie terminala tset reset

Komenda: reset

Tset inicjuje terminale. Tset najpierw określa typ używanego terminala. To ustalenie odbywa się w następujący sposób, przy użyciu pierwszego znalezionego typu terminala.

zaletą wydaje się być to, że jest niezależna od użytej powłoki. tutaj również działa z rybami.

Aby ponownie zainicjować dowolny terminal, po prostu zrób-

$ tset

LUB

$ reset
NES
źródło
Niestety jest to również źle. Nie resetuje istniejących zmiennych środowiskowych.
isarandi
9

Dodatkową opcją exec bashjest to, że jeśli zmieniłeś .profile(lub .bash_profile), możesz to zrobić

$ exec bash --login

To również przeczyta twój profil. Dodanie tej -iopcji nie zaszkodziłoby również jawne powiedzenie bashowi, że jest to interaktywna powłoka, ale normalnie może to sobie wyobrazić.

Tony Ledford
źródło
dla mnie to też działa bez
egzekucji
Niestety również źle. Już ustawione zmienne środowiskowe nadal tam są i nie są resetowane.
isarandi
6

Musisz zastąpić działającą aplikację / powłokę nową instancją. Np. Jeśli używasz bashjako preferowanej powłoki, wpisz w wierszu poleceń następujący wiersz ( $ jest symbolem zastępczym na początku wiersza poleceń):

> $ exec bash

Działająca aplikacja / powłoka zostaje zastąpiona nową instancją bashpodobną, zaczynając od zera. Wszystkie poprzednie modyfikacje zniknęły.

Uwaga: Nie zapominaj, że aplikacja terminala może zostać przeprogramowana. Musisz ręcznie zresetować aplikację terminala.

Raphael Bossek
źródło
2
Co rozumiesz przez „przeprogramowany”?
Eliah Kagan,
0

twoja powłoka jest plikiem wykonywalnym, który możesz wywołać. Więc jeśli używasz bash, możesz zadzwonić, basha jeśli używasz czegoś innego, jak zsh, możesz po prostu wejśćzsh

Stóg
źródło
0

Zastosowanie exec sudo --login --user $USER.

Jeśli chcesz również, aby poprzednio wprowadzone polecenia zniknęły (pełny reset terminala), połącz je z resetasreset; exec sudo --login --user $USER

Istnieje wiele odpowiedzi w Internecie, ale większość z nich nie działa. Łatwym sposobem na przetestowanie jest ustawienie, export SOMEVAR=42a następnie wykonanie rzekomo resetującego polecenia i wykonanie echo $SOMEVAR. Jeśli jest to 42, środowisko nie zostało zresetowane.

Jest też exec -c bash -llub exec env -i bash -l, ale są one uszkodzone, jakoś zmienna $ HOME nie jest ustawiana po tym.

isarandi
źródło