Перезапустить bash из терминала без перезапуска терминального приложения (mac)?

Оказывается, что сценарий выполнялся слишком рано; перед некоторыми предпосылками. Символьные ссылки назвали S03domotigaserver - я переименовал их к S80domotigaserver, и он теперь работает.

47
23.07.2015, 18:30
3 ответа

exec bash должен заменить текущий процесс оболочки на (новый экземпляр) bash.

69
27.01.2020, 19:34

tl;dr используйте exec $SHELL, если вы хотите запустить ту же оболочку, в которой вы находитесь. Принятый ответ будет работать только для вас, если вы используете bash.

--

Принятый ответ отлично подходит для оболочки, использующей bash, о чем также спрашивал ОП, однако я использую терминал в macOS с оболочкой по умолчанию, отличной от -(zsh ), и запускаю команда exec bashявно не дает желаемого эффекта :она запускает bash вместо моей оболочки по умолчанию.

Таким образом, независимой от среды -командой будет exec $SHELL, которая использует переменную среды $SHELL, в которой хранится оболочка по умолчанию для пользователя.

Кроме того, обратите внимание, что Apple заменила bash на zsh в macOS Catalina, поэтому после обновления до macOS 10.15 можно добиться эффекта, который ищет OP для запуска exec zshили exec $SHELL.

16
27.01.2020, 19:34

Самый короткий вариант:

$ exec $0
1
27.06.2021, 13:23

Теги

Похожие вопросы