我使用的是 i3,默认情况下,它sh
在使用 i3 configexec
命令启动进程时使用。这很好,但这意味着在我的 .zshrc 中创建的环境变量不会转移到 i3 的子进程(几乎是我打开的任何程序)。
为了解决这个问题,我尝试将/bin/sh
符号链接更改为指向,/bin/zsh
如下所示:
$ which sh
/bin/sh
$ sudo rm /bin/sh
$ sudo ln -s /bin/zsh /bin/sh
这将创建我期望的符号链接:
$ ls -la /bin/sh
lrwxrwxrwx 1 root root 8 Mar 13 22:16 /bin/sh -> /bin/zsh
$ which sh
/bin/sh
但是,当我尝试运行 时sh
,sh
开始而不是zsh
.当我跑步时也会发生同样的情况/bin/sh
。我注销然后重新登录。它没有改变任何东西。
/bin/zsh
并且命令按预期zsh
启动。zsh
答案1
事实证明zsh
发射正常,但它在模仿sh
。我应该更仔细地阅读手册页。正如 @steeldriver 指出的,手册页指出:“当 Zsh 分别作为 sh 或 ksh 调用时,它会尝试模拟 sh 或 ksh”