跳转至

Linux 图形化界面终端和 SSH 终端的环境变量不一样

约 246 个字 1 行代码 预计阅读时间 1 分钟

问题示例

在 Ubuntu 中,使用 pip 安装了一个模块,提示其可执行文件所处位置在 ~/.local/bin,不在 PATH

此时新开一个 SSH 连接,发现可以调用。

在图形化界面中重新开终端,发现无法调用,且 PATH 缺上面的路径。

原因

两种场景下,Shell 启动模式和配置文件加载逻辑不同。

SSH 连接(登录 Shell,login shell)

加载的配置文件:/etc/profile(系统级) → ~/.profile~/.bash_profile(用户级)

其中,Ubuntu 默认的 ~/.profile 文件 自动将 ~/.local/bin 加入 PATH。

图形界面终端(非登录交互式 Shell,non-login interactive shell)

加载的配置文件:仅 ~/.bashrc

默认的 ~/.bashrc 不包含 ~/.local/bin。图形终端不加载 ~/.profile,因此缺失该路径。

解决方案

最可靠的方式是确保 ~/.local/bin~/.bashrc 中被添加:

echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc

新开图形终端自动生效;现有终端执行 source ~/.bashrc