如何跟踪哪个文件在 PATH 中添加了路径?

如何跟踪哪个文件在 PATH 中添加了路径?

PATH有些东西向我的环境变量添加了不需要的路径。

我怎样才能找到罪魁祸首?

我已经看过:

  • ~/.bashrc
  • 〜/ .bash_profile
  • /etc/bashrc
  • /etc/配置文件
  • /etc/环境

答案1

这可能有点过头了,您(当然)应该尝试通过跟踪运行脚本的顺序来找到它,但有时该树变得难以解析。因此可以简单地 grep 查找它:

grep --regexp='PATH=.*/path/that/you/try/to/find' --binary-files=without-match -r /

请注意,这是一个非常漫长的过程,您的硬盘将在整个过程中变得疯狂(您基本上正在阅读您拥有的每个文本文件)。

答案2

尝试:

grep -rF --binary-files=without-match ':/the/undesired/path' / 2> /dev/null

如果/the/undesired/path$UNKNOWN_VARIABLE_NAME_FOR_THE_UNDESIRED_PATH或 ,这显然行不通。

请注意,/home/user/undesired/path通常会被指定为$HOME/undesired/path.

运行相同的操作而不:获取变量赋值:

grep -rF --binary-files=without-match '/the/undesired/path' / 2> /dev/null

如果这不起作用,请查找所有PATH作业并手动过滤:

grep -rwF --binary-files=without-match 'PATH=' / 2> /dev/null

答案3

find使用和单独查找和搜索文件xargs,请参阅man每个文件的页面。

sudo find / -type f -print0 | \
   xargs -0 --no-run-if-empty \
       grep -l 'PATH'

列出所有提及 PATH 的文件名。附加

| xargs less

查看文件。

我们无法搜索,因为据我们所知,/some/deep/path/bin它可以表示为。$SDP/bin

相关内容