当我进入$PATH
Debian 11的终端时,我看到有几个内容是相同的。我检查了/etc/profile
和的文件~/.bashrc
,它甚至不包含 的输出的一些内容$PATH
。
/etc/profile
和中没有的内容在哪里~/.bashrc
,- 如何查找其内容构成输出的所有文件
$PATH
? - 我应该如何保证输出的内容
$PATH
不重复?
谢谢。
答案1
这是找出$PATH
变量如何以及从何处填充的可靠方法。strace
如果未安装,请先安装( sudo apt install strace
)。
- 查找任何未使用的 getty 进程,可能没有:
pgrep agetty
- 如果没有,请按 Ctrl + Alt + F4,这将创建一个。
- 现在在其他任何地方以 root 身份运行此命令,例如在图形会话中(使用 Alt + F1 或 Alt + F7 返回到它)。
sudo strace -e file --string-limit=500 -f -o /tmp/login.log -p `pgrep agetty`
- 按 Ctrl + Alt + F4 并登录。不要做别的。
- 按 Ctrl + C 终止 strace 进程。
现在您可以检查该/tmp/login.log
文件中是否有 shell 已打开的任何文件。现在您可以找到grep
所有这些并找到 PATH 变量在哪里定义/重新定义。