我已使用以下命令将 sh 替换为 zsh:
$ sudo mv /bin/sh /bin/sh1
$ sudo ln -s /usr/bin/zsh /bin/sh
$ ls -l /bin/sh
lrwxrwxrwx 1 root root 12 Jul 6 20:48 /bin/sh -> /usr/bin/zsh
$ which sh
/bin/sh
$ sh
$ exit
$ zsh
mpc% exit
正如您所看到的,尽管该命令已链接,但它sh
不会打开shell。zsh
问题是为什么?我该如何解决这个问题?
答案1
它应该这样做。如果您将其启动为sh
,则它假定您想要与称为 的其他 shell 大部分兼容的东西sh
,并以兼容模式运行。
看http://zsh.sourceforge.net/Doc/Release/Initation.html#Compatibility:
Zsh 尝试模仿嘘或者克什当它被分别调用为
sh
或 时ksh
; [...]在嘘和克什兼容模式以下参数不是特殊的,也不是由 shell 初始化的: ...
prompt
,PROMPT
, ...不执行通常的 zsh 启动/关闭脚本。
我不确定调用 as 时是否可能无法在兼容模式下工作sh
,但这可能会破坏系统上的许多脚本,这些脚本假设/bin/sh
只是sh
,而不是 Zsh。
可能最好改为运行它zsh
。