Bash 无法看到 PATH 更新

Bash 无法看到 PATH 更新

我在虚拟机上运行 Debian。我登录 GUI 并转到“应用程序”>“附件”>“终端”。

# echo shell: /bin/bash

我修改了ENV_SUPATHENV_PATH里面的/etc/login.defs.我重新启动了外壳。在超级用户模式下echo $PATH显示我的更新。在正常模式下echo $PATH不显示我的更新。我添加并修改了~/.bash_profile。我仍然看不到自己的变化,我开始追我的尾巴。

/etc/login.defs内容:

ENV_SUPATH      PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/brian/.linuxbrew/bin
ENV_PATH        PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/home/brian/.linuxbrew/bin

~/.bash_profile:

PATH=/home/brian/.linuxbrew/bin:$PATH

我该如何排查并解决这个问题?

答案1

简短的回答:也调整/etc/profile(并且/etc/sudoers小心)

长答案: PATH 变量在多个地方定义。

根据登录.defs(5),仅su使用它。

在(variable )中有它sudo自己的安全 PATH 定义/etc/sudoerssecure_path=...

大多数 Unix shell 将读取/etc/profile~/.profile。在 Debian 中,该文件用于定义登录 shell 的 PATH。 Bash 还读取~/.bash_profile~/.bash_login.

...可能还有更多(运行grep '\<PATH\>' /etc/ -R

相关内容