我刚刚将 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.plist
为com.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。