Як реініціалізувати вікно терміналу, а не закривати його та запускати нове?


49

Коли я вношу деякі зміни в поведінку оболонки / bash, такі як встановлення псевдоніма, чи є швидка команда повторної ініціалізації термінального вікна замість закриття та відкриття нового вікна?

Відповіді:


51

Якщо ви маєте на увазі перезавантаження конфігурації .bashrc, тоді:

source ~/.bashrc

Для меншого набору тексту можна замінити sourceкрапкою:. ~/.bashrc


2
Ось питання, як це поводиться інакше, ніж source ~/.bashrc?
катастрофа

Це не так. Переглянувши сторінку bash man, ви побачите, що команди вказані як еквівалентні.
Карстен Тієль

2
sourceє специфічним для bash. .є більш стандартним. Обидва працюють однаково в басі.
Майкл Террі

1
Це просто перезавантажує ваш PATH та деякі змінні середовища. Він нічого не "скидає". @ Відповідь NES правильна.
Серін

2
Це нічого не скидає, якщо у вас були оновлення вашого PATH, тепер у вас будуть старі та нові оновлення.
Константин

39

Деякі доповнення, які я знайшов у вікні сторінки з команди reset / tset

ініціалізація терміналу скидання tset

команда: reset

Tset ініціалізує термінали. Tset спочатку визначає тип терміналу, який ви використовуєте. Це визначення здійснюється наступним чином, використовуючи перший знайдений тип терміналу.

Перевага, здається, полягає в тому, що вона не залежить від використовуваної оболонки. тут також працює з рибою.

Тому для повторної ініціалізації будь-якого терміналу просто зробіть-

$ tset

АБО

$ reset

На жаль, це також неправильно. Він не скидає існуючі змінні середовища.
ісаранді

9

Додатковим варіантом до цього exec bashє те, що якщо ви змінили .profile(або .bash_profile), можете зробити це

$ exec bash --login

Це також прочитає ваш профіль ще раз. Не завадило б також додати -iпараметр, щоб явно сказати bash, що це інтерактивна оболонка, але вона зазвичай може зрозуміти це для себе.


для мене це працює і без exec
Армен Саноян

На жаль, також неправильно. Встановлені змінні середовища все ще існують і не скидаються.
isarandi

6

Ви повинні замінити запущений додаток / оболонку на новий екземпляр. Наприклад, якщо ви використовуєте bashв якості бажаної оболонки, введіть наступний рядок у командному рядку ( $ - заповнювач місця для початку вашого командного рядка):

> $ exec bash

Запущена програма / оболонка замінюється новим екземпляром, bashподібним починаючи з нуля. Усі ваші попередні модифікації вже відсутні.

Зауваження: Не забувайте, що ваша термінальна програма може бути перепрограмована. Ви повинні скинути свою термінальну програму вручну.


2
Що ви маєте на увазі під перепрограмованим?
Елія Каган

0

ваша оболонка - це виконуваний файл, на який можна зателефонувати. Отже, якщо ви використовуєте bash, ви можете зателефонувати, bashа якщо ви використовуєте щось інше, наприклад zsh, ви можете просто ввестиzsh


0

Використовуйте exec sudo --login --user $USER.

Якщо ви також хочете відхилити раніше введені команди (повне скидання терміналу), комбінуйте їх з resetякreset; exec sudo --login --user $USER

У мережі є багато відповідей, але більшість насправді не працюють. Найпростіший спосіб перевірити - встановити, export SOMEVAR=42а потім виконати команду, що нібито скидає, і виконати echo $SOMEVAR. Якщо це 42, середовище не було скинуто.

Існує також exec -c bash -lчи exec env -i bash -l, але вони ламаються, як - то $ HOME змінна не встановлена після цього.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.