如何查找内容属于$PATH的所有文件?

如何查找内容属于$PATH的所有文件?

当我进入$PATHDebian 11的终端时,我看到有几个内容是相同的。我检查了/etc/profile和的文件~/.bashrc,它甚至不包含 的输出的一些内容$PATH

  1. /etc/profile和中没有的内容在哪里~/.bashrc
  2. 如何查找其内容构成输出的所有文件$PATH
  3. 我应该如何保证输出的内容$PATH不重复?

谢谢。

答案1

这是找出$PATH变量如何以及从何处填充的可靠方法。strace如果未安装,请先安装( sudo apt install strace)。

  1. 查找任何未使用的 getty 进程,可能没有:

pgrep agetty

  1. 如果没有,请按 Ctrl + Alt + F4,这将创建一个。
  2. 现在在其他任何地方以 root 身份运行此命令,例如在图形会话中(使用 Alt + F1 或 Alt + F7 返回到它)。
sudo strace -e file --string-limit=500 -f -o /tmp/login.log -p `pgrep agetty`
  1. 按 Ctrl + Alt + F4 并登录。不要做别的。
  2. 按 Ctrl + C 终止 strace 进程。

现在您可以检查该/tmp/login.log文件中是否有 shell 已打开的任何文件。现在您可以找到grep所有这些并找到 PATH 变量在哪里定义/重新定义。

相关内容