我最近安装了一个 Arch-Linux 系统。如果我输入
echo $PATH
它(以及其他目录)指向我的目录,/home/user/dir
我记得我把它设置在某处。我也以 root 用户身份拥有它,所以它不能在里面~/.bashrc
,在里面也找不到/root/.bashrc
。我也在里面找过/etc/profile
,/etc/bash.bashrc
但也没找到。
有没有办法找到它的设置位置?
答案1
尝试在以下目录中搜索所有文件/etc
:
sudo grep -r "/home/user/dir" /etc
开关-r
使grep
搜索/home/user/dir
在内容/etc
及其子目录中的所有文件。
-d行动,--目录=行动
如果输入文件是目录,则使用 ACTION 进行处理。默认情况下,ACTION 是读,这意味着目录的读取方式与普通文件一样。如果 ACTION 为跳过,目录将被悄悄跳过。如果 ACTION 是递归,grep 递归读取每个目录下的所有文件;这相当于-r选项。
如果失败了,你可以简单地将搜索范围扩大到全部文件:
sudo grep -r "/home/user/dir" /
或者你可以搜索修改该PATH
变量的所有文件:
sudo grep -r "PATH=" /
答案2
将用户目录以 root 身份放在全局路径中通常不是一个好主意;)您检查过该/etc/environment
文件吗?
答案3
@Dennis 给了我一个好主意!我搜索了一下/etc
,找到了它,但用的是另一个命令,因为他的命令只是搜索文件名(据我所知)。
我成功使用的是
find / -type f -exec grep -i /home/user/dir '{}' \; -print
答案4
如果你正在深入研究 PATH 中定义某些内容的位置,你可以尝试使用以下替代方法銀色尋找者进行快速搜索。
默认情况下,它会输出带有行号的匹配项,因此与 结合使用egrep
可以仅输出文件名。如果您不希望出现重复项,它还会输出包含匹配项的行号,以便cut
隔离文件名uniq
。当然,如果您不想要完整的匹配项输出,则可以省略任何管道命令。
ag -s '/home/user/dir' | egrep '^\d+' | cut -d ':' -f 1 | uniq