升级到 Mac OSX Catalina 后终端启动卡住

升级到 Mac OSX Catalina 后终端启动卡住

我刚刚将 Mac 操作系统升级到 10.15.1 (Catalina),现在无法正常与终端交互。当我打开终端应用程序 (或 iTerm) 时,它会输出上次尝试登录的时间,但不会提示我输入命令。

我可以通过活动监视器看到终端应用程序正在后台运行许多 bash 进程,这些进程可能会引发错误,但我不确定如何解读它们。以下是此类进程写入的示例/dev/stdout

Sort by top of stack, same collapsed (when >= 5):
        __fork  (in libsystem_kernel.dylib)        1314
        read  (in libsystem_kernel.dylib)        909
        stat$INODE64  (in libsystem_kernel.dylib)        50
        szone_force_unlock  (in libsystem_malloc.dylib)        35
        __ioctl  (in libsystem_kernel.dylib)        34
        tiny_malloc_from_free_list  (in libsystem_malloc.dylib)        33
        _objc_atfork_parent  (in libobjc.A.dylib)        23
        tiny_free_list_add_ptr  (in libsystem_malloc.dylib)        23
        _sigtramp  (in libsystem_platform.dylib)        22
        __open  (in libsystem_kernel.dylib)        15
        _platform_memmove$VARIANT$Haswell  (in libsystem_platform.dylib)        12
        _malloc_fork_parent  (in libsystem_malloc.dylib)        9
        sigprocmask  (in libsystem_kernel.dylib)        9
        __pipe  (in libsystem_kernel.dylib)        7
        __wait4  (in libsystem_kernel.dylib)        7
        mach_msg_trap  (in libsystem_kernel.dylib)        7
        ???  (in bash)  load address 0x10cac2000 + 0x28ae1  [0x10caeaae1]        6
        close  (in libsystem_kernel.dylib)        6
        tiny_free_no_lock  (in libsystem_malloc.dylib)        6
        tiny_malloc_should_clear  (in libsystem_malloc.dylib)        6
        fork  (in libsystem_c.dylib)        5
        setpgid  (in libsystem_kernel.dylib)        5

Binary Images:
       0x10cac2000 -        0x10cb42ff7 +bash (118.40.2) <30A60B27-69AE-323A-AA7E-B8B648C54096> /bin/bash
       0x10d8e2000 -        0x10d972b5f  dyld (733.6) <DAFEA246-2F9A-3DCB-A37C-4246D4F92770> /usr/lib/dyld
    0x7fff61168000 -     0x7fff61169ff3  libSystem.B.dylib (1281) <1DD1BCD2-2C85-3B81-8CAF-224FB042F441> /usr/lib/libSystem.B.dylib
    0x7fff61446000 -     0x7fff61499fff  libc++.1.dylib (800.7) <1D42387D-206A-3F06-9B5F-705B83EAC295> /usr/lib/libc++.1.dylib
    0x7fff6149a000 -     0x7fff614aefff  libc++abi.dylib (800.7) <D89ABFBF-3754-35AB-BAEE-FBF14857F79B> /usr/lib/libc++abi.dylib
    0x7fff62939000 -     0x7fff62968ff7  libncurses.5.4.dylib (57) <7115BD9E-9A53-3538-BA7C-6D71E8C0F9F1> /usr/lib/libncurses.5.4.dylib
...

当我将终端首选项设置为使用“默认登录 shell”打开 shell 时,就会出现此问题,这在我以前的操作系统版本上运行良好,并使用启动命令/bin/bash。有趣的是,当我将 shell 启动命令更改为 时,我能够成功启动终端/bin/sh,但是我无法在bash_profile以此方式启动的会话中获取源代码(当我输入 时source ~/.bash_profile,进程挂起)。

我尝试按照建议将文件重命名com.apple.Terminal.plistcom.apple.Terminal.OLD.plist这里(这不完全是我的问题,但我很绝望,而且无论如何它都不起作用)。

我陷入困境——非常感谢您的帮助!

答案1

问题最终在于,有了 Catalina,Apple被取代bash,默认 shell 为 zsh。(让大家知道这一点真好)

因此,我的 shell 脚本挂在命令 上builtin cd //..,因为cd在 zsh 中不是有效命令。我最终将 shell 从 bash 切换到 zsh,并将设置移植.bash_profile.zshrc。谢谢 Apple,我很高兴过去 2.5 天的时间都花在了这件事上。

答案2

使用 iTerm(iTerm2),转到“首选项 > 配置文件 > Shell”,将启动命令更改为 /bin/bash(从 OsX 10.15.4 开始),然后启动 shell。

相关内容