터미널 애플리케이션(mac)을 다시 시작하지 않고 터미널에서 bash를 다시 시작하시겠습니까?

터미널 애플리케이션(mac)을 다시 시작하지 않고 터미널에서 bash를 다시 시작하시겠습니까?

이 질문에 대한 답변을 찾아봤지만 찾을 수 없는 것 같습니다(이상하네요).

내 질문은 Mac 터미널 내에서 BASH 세션을 다시 시작하는 쉬운 방법이 있는지입니다. 터미널 응용 프로그램을 닫고 다시 시작하는 것과 동일한 동작을 원합니다(모든 변수 재설정, .bash_profile소스 등).

나는 자원을 얻는 방법을 알고 있지만 .bash_profile그것은 내가 원하는 것이 아닙니다. 제가 이 작업을 수행하려는 이유 중 하나는 BASH 프롬프트의 플러그인에 색상이 여러 번 로드되는 것을 방지하는 코드가 있기 때문입니다. 따라서 소싱은 .bash_profile색상 변수를 다시 로드하지 않으며 변경 사항을 적용하려면 터미널 응용 프로그램을 다시 시작해야 합니다.

답변1

exec bash현재 쉘 프로세스는 (새 인스턴스) bash로 대체되어야 합니다.

편집: 아래 답변에서 Catalina가 bash를 zsh로 대체한 것으로 나타납니다. 이 경우 기본 셸을 실행할 수 있거나 항상 사용해야 합니다 exec zsh.exec "$SHELL"

답변2

너무 길어요.에 있는 것과 동일한 쉘을 시작하려면 사용하십시오 exec $SHELL. 허용되는 답변은 bash를 사용하는 경우에만 적용됩니다.

--

허용되는 답변은 OP가 요청한 bash를 사용하는 셸에 적합하지만 macOS에서 기본이 아닌 셸(zsh)이 있는 터미널을 사용하고 있으며 해당 명령을 실행해도 exec bash분명히 원하는 결과가 없습니다. 효과: 기본 쉘 대신 bash를 시작합니다.

exec $SHELL따라서 환경 독립적 명령은 사용자의 기본 셸을 저장하는 환경 변수를 사용합니다 .$SHELL

또한 Apple은 OP가 실행하려는 효과를 얻기 위해 exec zsh또는 exec $SHELLmacOS 10.15로 업데이트한 후에 macOS Catalina에서 bash를 zsh로 대체했습니다.

답변3

~에 따르면이 기사Catalina로 업그레이드해도 쉘은 변경되지 않습니다. 하지만 새 계정은 zsh. bash로 변경할 수 있습니다. bash향후 어느 시점에서는 macOS의 일부가 되지 않을 것입니다. 분명히 라이센스는 zsh덜 제한적입니다.

OP가 exec zsh.

답변4

이것은 나에게 효과적입니다.

exec env -i HOME=$HOME bash -l
  • exec현재 쉘 교체
  • env -i HOME=$HOME기존 환경 변수를 모두 재설정하고 새 쉘의 HOME을 이전 $HOME으로 설정합니다.
  • bash -l새 로그인 셸을 시작합니다(zsh에도 비슷한 명령이 있을 수 있음)

별칭으로 추가했는데 잘 작동합니다.

alias reload='echo "Reloading shell...";exec env -i HOME=$HOME bash -l'

관련 정보