Перезагрузите терминал без закрытия на MacOS

Как перезапустить текущий сеанс терминала 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


Используйте функции терминала очистить или экран.

Оцените статью
clickpad.ru
Добавить комментарий