为什么 ubuntu 不能从第一个 bash 启动

为什么 ubuntu 不能从第一个 bash 启动

我猜我无意中创建了一些子 shell,然后意识到我无法再访问 Conda。然后,我进行了一些搜索并使用了bash。现在我又可以访问 Conda 了。但问题是现在每次我打开 Ubuntu 终端时,我都必须打开bash一次。我想这pstree能比我更好地解释这种情况。我不知道为什么它不再从第一个 bash 开始。这里

在此处输入图片描述

我认为这一切发生之前pstree是这样的: 在此处输入图片描述

答案1

显然 WSL 启动 bash 时登录外壳。除其他事项外,这意味着它会按优先顺序读取您的~/.bash_profile.profile文件。您随后调用的bash命令将作为交互式非登录shell 因此忽略那些启动文件而是读取你的~/.bashrc(这大概是你完成 conda 设置的地方)。

~/.profile常规桌面 Ubuntu 试图通过在默认设置中添加一个部分来使非登录和登录 shell 更加相似,

  • 检查 shell 是否为 bash(不是 sh、zsh 或其他 shell)

  • 如果是,则获取用户的~/.bashrc文件来源

WSL 似乎提供了自己的最低配置~/.profile,不执行此操作 - 但如果它困扰你,你可以

  • 备份当前文件:cp ~/.profile ~/.profile.bak

  • 从目录中复制默认的 Ubuntu /etc/skelcp /etc/skel/.profile ~/

或者(可能更好),~/.bash_profile如果您还没有,请创建一个,然后~/.bashrc从那里获取。

答案2

我从 Github 帖子。虽然这不是真正的解决方案,因为它没有解决 2*[{init}] 问题,但它确实起了作用。

相关内容