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?

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


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

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ć.


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.


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


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.