
Instalei recentemente um sistema Arch-Linux. Se eu digitar
echo $PATH
ele aponta (entre outros) para um diretório dentro do meu /home/user/dir
que lembro que configurei em algum lugar. Eu também o tenho como usuário root, então ele não pode estar ~/.bashrc
e não está tão bem em /root/.bashrc
. Procurei também dentro /etc/profile
e /etc/bash.bashrc
não consegui encontrá-lo lá também.
Existe uma maneira de descobrir onde ele está definido?
Responder1
Tente procurar o diretório em todos os arquivos em /etc
:
sudo grep -r "/home/user/dir" /etc
O -r
switch faz grep
busca /home/user/dir
noconteúdode todos os arquivos /etc
e seus subdiretórios.
Degrep(1) - página de manual do Linux:
-dAÇÃO,--diretórios=AÇÃO
Se um arquivo de entrada for um diretório, use ACTION para processá-lo. Por padrão, AÇÃO éler, o que significa que os diretórios são lidos como se fossem arquivos comuns. Se a AÇÃO forpular, os diretórios são ignorados silenciosamente. Se a AÇÃO forrecurso, grep lê todos os arquivos em cada diretório, recursivamente; isso é equivalente ao-ropção.
Se isso falhar, você pode simplesmente estender a pesquisa paratodosarquivos:
sudo grep -r "/home/user/dir" /
Ou você pode procurar todos os arquivos que modificam a PATH
variável:
sudo grep -r "PATH=" /
Responder2
Geralmente é uma má idéia colocar diretórios de usuários no caminho global como root ;) Você verificou o /etc/environment
arquivo?
Responder3
@Dennis me indica uma boa ideia! Procurei dentro do meu /etc
e encontrei, mas com outro comando, pois o comando dele está apenas procurando nomes de arquivos (até onde eu entendi).
O que usei com sucesso foi
find / -type f -exec grep -i /home/user/dir '{}' \; -print
Responder4
Se você está procurando profundamente onde algo está definido em seu PATH, você pode tentar esta alternativa usandoo buscador de pratapara pesquisa rápida.
Por padrão, ele gera correspondências com números de linha, então combine com egrep
para obter apenas a saída de nomes de arquivos. Ele também gerará números de linha contendo correspondências para cut
isolar nomes de arquivos e uniq
se você não quiser duplicatas. É claro que qualquer um dos comandos canalizados pode ser omitido se você não quiser a saída completa das correspondências.
ag -s '/home/user/dir' | egrep '^\d+' | cut -d ':' -f 1 | uniq