我大多数时候更喜欢在 macOS 上使用 fish shell,但不要将其用作登录 shell,因为我认为有时它可能会导致问题。
exec fish
因此,我只需在 的最底部添加.zshrc
,就完成了。这意味着我的登录 shell 仍然是 zsh,我的$PATH
修改仍然在 中.zprofile
,但是当我打开终端时,我不必手动切换到 fish。对我来说很完美。
但是,如果我出于某些特定原因仍然想从 fish 切换到 zsh 怎么办? 有可能吗?(因为如果我简单地输入zsh
并按回车键,我当然会立即切换回 fish。)
更新:有一个解决方法zsh -c
,但它只适用于某些命令。
在我看来,这个解决方案带来的问题比它解决的问题还多 :) 您只需在其配置中设置 macOS 终端使用的默认 shell 即可。无需将登录 shell 设置为其他内容,也无需从登录 shell 启动您选择的终端 shell。终端启动的内容完全独立于登录 shell,如果您没有明确说“嘿,我希望您启动这个程序!”,它恰好会使用登录 shell。
除此之外,你可以
zsh
很容易地检查进程的父 ID,并且只有当它恰好是终端可执行文件时,才执行你的fish
。类似于,而不是你的计划exec fish
:请注意,我并不认为这是可行的方法,但这确实是可能的。
(为了找出“/path/to/macos 终端”,我会使用
pstree -h
;不知道它是否存在于 macos 上)您可以检查一个变量:
然后,如果您想启动 zsh,请将 $SKIP_FISH 设置为 yes: