从 Bash 切换到 ZSH 后如何修复符号链接

从 Bash 切换到 ZSH 后如何修复符号链接

bash尽管我只使用,但我已将其作为我的默认 shell zsh

我总是自己打开终端并输入 来启动它zsh

今天我决定用它作为我的默认 shell。所以我找到了此链接并运行以下命令

sudo chsh -s $(which zsh) john

john我的用户在哪里。

一切都运行正常,直到我尝试访问我的银行网站并发现我为 Java Chrome 插件创建的符号链接不再起作用。

zsh我尝试删除它并通过以下命令创建一个新的:

sudo ln -s /opt/jre1.7.0_55/lib/amd64/libnpjp2.so

但没用。我现在正在使用,我应该做些不同的事情吗zsh?如何让我的符号链接再次工作?

答案1

如果您无法明确了解您的浏览器遇到的错误,我只能进行推测,但可以得出以下结论:

您的 ~/.bashrc 很可能正在设置某些环境变量并导出它们。当您手动调用 zsh 时,它会(作为 bash shell 的子进程)继承这些环境变量。

在切换到 zsh 之前,您应该仔细调查在启动初始 bash 会话时设置了哪些环境变量。

为此,首先调用 bash:

$ bash

然后检查你的环境变量:

$ set

此输出会很长。您可能希望通过类似 more 或 less 的分页程序进行管道传输。由于您在使用 java 时遇到问题,您可能希望验证您的 JAVA_HOME 环境变量是否在 zsh 中正确设置。从 bash 执行:

$ echo $JAVA_HOME

然后退出该 bash 会话并通过再次发出相同的 echo 命令来验证 JAVA_HOME 是否在 zsh 中正确设置。

如果这些不匹配,您需要在 ~/.zshrc 中进行设置,您可以通过返回 bash 然后将变量内容回显到 .zshrc 中来轻松完成此操作,如下所示:

$ bash
$ echo "export JAVA_HOME=" $JAVA_HOME >> .zshrc
$ exit

答案2

首先,绝对没有理由chsh使用 sudo 运行!下次,只需运行

chsh -s $(which bash) 

也绝对没有理由使用sudo ln。链接是所有人可读/写/可执行的。现在,您创建的链接与您使用的 shell 无关。绝对没有理由更改 shell 会影响它们。如果您无法访问链接,则问题出在其他地方。

无论如何,跑吧

ln -s /opt/jre1.7.0_55/lib/amd64/libnpjp2.so

这将创建一个名为 的链接libnpjp2.so,该链接位于您当前的目录中并指向/opt/jre1.7.0_55/lib/amd64/libnpjp2.so。我非常怀疑这是您想要做的,但这似乎是您想要的。

如果出于某种原因上述命令不起作用,请编辑您的问题并告诉我们恰恰他们是如何失败的。简单的“没有工作”没什么用。有错误消息吗?是否创建了断开的链接?出了什么问题?

相关内容