Как перезапустить текущий сеанс терминала MacOS, не закрывая окно?
В Linux я использую exec bash
, но он не работает в этой среде . Я внес несколько изменений в .bash_profile
(приглашение, псевдоним и т. Д.), Который я хотел бы видеть, не закрывая его и не открывая снова.
заранее спасибо
Просто введите команду:
exec bash -l
I думаю, это должно сработать.
Для zsh
,
exec zsh -l
Это необходимо, потому что каждая оболочка в macOS
по умолчанию является оболочкой входа.
Просто напишите exec bash
заменит текущую оболочку оболочкой без входа в систему, что отличается от закрытия и повторного открытия терминала.
exec
сделать новый процесс bash -l
для замены текущей оболочки. Если exec
не используется, bash -l
порождает новую оболочку поверх текущей оболочки, увеличивая $ SHLVL
.
Фактический ответ, если вы интерпретируете вопрос как имеющий такой же эффект в состоянии терминального сеанса как закрытие и повторное открытие Терминала, похоже, запускает исполняемый файл используемой оболочки для запуска нового сеанса:
https://unix.stackexchange.com/a/217907/137983
zsh
Если вы не используете Catalina, где ZSH является оболочкой по умолчанию, это будет:
bash
После этого все состояние предыдущего сеанса (например, переменные среды сеанса) будет сброшено. Также, я думаю, профиль ZSH должен быть переработан.
2
Если вы внесли какие-либо изменения в свои .bashrc
и .bash_profile
, то, не закрывая терминал, вы можете указать псевдоним
в ваших .bashrc
и .bash_profile
, как показано ниже, чтобы перезапустить терминал:
alias rest = 'exec bash -l; source ~/.bashrc; source ~/.bash_profile'
Эта команда снова создает .bashrc и .bash_profile, в том смысле, что перезапускает терминал и создает новый сеанс терминала. Меня устраивает. Попробуйте!
Итак, если вы хотите перезапустить терминал, просто введите rest
(сокращение от перезапуска) в вашем терминале.
Как повторно инициализировать окно терминала вместо того, чтобы закрывать его и запускать новое?
Когда я делаю несколько изменения поведения оболочки/bash, такие как настройка псевдонима, есть ли быстрая команда для повторной инициализации окна терминала вместо закрытия и открытия нового окна?
Если вы означает перезагрузку конфигурации .bashrc, затем:
source ~/. bashrc
Чтобы меньше печатать, вы можете заменить source
точкой: . ~/.bashrc
Некоторое дополнение, которое я нашел на странице руководства из команды reset/tset
tset сбросить инициализацию терминала
команда: reset
Tset инициализирует терминалы. Tset сначала определяет тип терминала, который вы используете. Это определение выполняется следующим образом с использованием первого найденного типа терминала.
Кажется, преимущество состоит в том, что он не зависит от используемой оболочки. здесь также работает с рыбой.
Итак, чтобы повторно инициализировать любой терминал, просто выполните —
$ tset
ИЛИ
$ reset
1
Дополнительная опция для exec bash
заключается в том, что если вы изменили свой .profile
(или .bash_profile
), вы можете сделать
$ exec bash --login
Это также снова прочитает ваш профиль. Не помешало бы добавить параметр -i
, чтобы явно указать bash, что это интерактивная оболочка, но обычно он может сам это выяснить.
4
Вы должны заменить запущенное приложение/оболочка с новым экземпляром. Например. если вы используете bash
в качестве предпочитаемой оболочки, введите следующую строку в командной строке ( $ — это заполнитель для начала вашей командной строки):
> $ exec bash
Запущенное приложение/оболочка заменяется новым экземпляром bash
вроде начиная с нуля. Все ваши предыдущие изменения исчезли.
Примечание: не забывайте, что ваше терминальное приложение может быть перепрограммировано. Вам необходимо вручную сбросить настройки терминального приложения.
2
Используйте exec sudo --login --user $ USER
.
Если вы также хотите, чтобы ранее введенные команды исчезали (полный сброс терминала), объедините его с reset
как reset; exec sudo --login --user $ USER
.
Чтобы сохранить текущий рабочий каталог, используйте следующую функцию:
reinit () {reset exec sudo --login --user "$ USER"/bin/sh -c "cd '$ PWD'; exec '$ SHELL' -l"}
В Интернете есть много ответов, но большинство из них не работает. Простой способ проверки — установить export SOMEVAR = 42
, затем выполнить команду предположительно сброса и выполнить echo $ SOMEVAR
. Если 42, среда не сбрасывалась.
Также есть exec -c bash -l
или exec env -i bash -l
, но они не работают, почему-то после этого переменная $ HOME не устанавливается.
3
ваша оболочка — это исполняемый файл, который вы можете вызывать. Итак, если вы используете bash, вы можете вызвать bash
, а если вы используете что-то еще, например zsh, вы можете просто ввести zsh
Используйте функции терминала очистить или экран.