Как повторно инициализировать окно терминала вместо того, чтобы закрывать его и запускать новое?

49

Когда я делаю некоторые изменения в поведении shell / bash, такие как настройка псевдонима, есть ли быстрая команда для повторной инициализации окна терминала вместо закрытия и открытия нового окна?

NES
источник

Ответы:

51

Если вы хотите перезагрузить конфигурацию .bashrc, то:

source ~/.bashrc

Для меньшего набора текста вы можете заменить sourceна точку:. ~/.bashrc

narkisr
источник
2
Вот вопрос, как это ведет себя иначе, чем source ~/.bashrc?
авария
Это не так. Посмотрев справочную страницу bash, вы увидите, что команды перечислены как эквивалентные.
Карстен Тиль
2
sourceспецифично для bash. .является более стандартным. Оба работают одинаково в bash.
Майкл Терри
1
Это просто перезагрузит ваш PATH и некоторые переменные окружения. Это ничего не «сбрасывает». @ РЭШ ответ правильный.
Церин
2
Это ничего не сбрасывает, если у вас были обновления для вашего PATH, теперь у вас будут старые обновления и новые обновления.
Константин
39

Некоторое дополнение я нашел в man-странице из команды reset / tset

инициализация терминала сброса tset

команда: reset

Tset инициализирует терминалы. Сначала Tset определяет тип используемого вами терминала. Это определение выполняется следующим образом с использованием первого найденного типа терминала.

кажется, что преимущество заключается в том, что он не зависит от используемой оболочки. также работает с рыбой здесь.

Поэтому для повторной инициализации любого терминала просто

$ tset

ИЛИ ЖЕ

$ reset
NES
источник
К сожалению, это тоже неправильно. Он не сбрасывает существующие переменные среды.
Изаранди
9

Дополнительным вариантом exec bashявляется то, что если вы изменили свой .profile(или .bash_profile), вы можете сделать

$ exec bash --login

Это также будет читать ваш профиль снова. Также было бы -iнеплохо добавить опцию, чтобы явно сказать bash, что это интерактивная оболочка, но обычно она сама это понимает.

Тони Ледфорд
источник
для меня это работает без exec тоже
Армен Саноян
К сожалению, неправильно. Уже установленные переменные среды все еще там и не сбрасываются.
Изаранди
6

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

> $ exec bash

Запущенное приложение / оболочка заменяется новым экземпляром bashlike, начинающимся с нуля. Все ваши предыдущие модификации ушли.

Примечание: не забывайте, что ваше терминальное приложение может быть перепрограммировано. Вы должны сбросить приложение терминала вручную.

Рафаэль Боссек
источник
2
Что вы подразумеваете под «перепрограммированным»?
Элия ​​Каган
0

ваша оболочка является исполняемым файлом, который вы можете вызвать. Так что, если вы используете bash, вы можете позвонить, bashа если вы используете что-то еще, например zsh, вы можете просто ввестиzsh

стог
источник
0

Использование exec sudo --login --user $USER.

Если вы хотите , ранее введенные команды в disapper (полный сброс терминала), объединить его с resetтакreset; exec sudo --login --user $USER

В Интернете есть много ответов, но большинство из них на самом деле не работают. Простой способ проверить - установить, export SOMEVAR=42затем выполнить команду сброса и выполнить команду echo $SOMEVAR. Если это 42, среда не была сброшена.

Существует также exec -c bash -lили exec env -i bash -l, но они не работают, каким-то образом переменная $ HOME не устанавливается после этого.

isarandi
источник