Descubra onde $PATH está definido

Descubra onde $PATH está definido

Instalei recentemente um sistema Arch-Linux. Se eu digitar

echo $PATH

ele aponta (entre outros) para um diretório dentro do meu /home/user/dirque lembro que configurei em algum lugar. Eu também o tenho como usuário root, então ele não pode estar ~/.bashrce não está tão bem em /root/.bashrc. Procurei também dentro /etc/profilee /etc/bash.bashrcnã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 -rswitch faz grepbusca /home/user/dirnoconteúdode todos os arquivos /etce 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 PATHvariá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/environmentarquivo?

Responder3

@Dennis me indica uma boa ideia! Procurei dentro do meu /etce 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 egreppara obter apenas a saída de nomes de arquivos. Ele também gerará números de linha contendo correspondências para cutisolar nomes de arquivos e uniqse 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

informação relacionada