Este comando levará muito tempo para ser executado (já que examinará todos os arquivos no sistema), mas deverá encontrar o arquivo:
find / -type f -print0 | xargs -0 grep -w 'TMOUT=' /dev/null
Uma abordagem alternativa é descobrir em que circunstâncias ela está definida, por exemplo, verificando se ela está definida quando o shell não é um shell de login ( env -i bash
) e se é ( env -i bash --login
). Você pode verificar manualmente os arquivos em $HOME
, por exemplo .profile
, .env
, .bashrc
ou .bash_profile
. Existem também alguns arquivos em /etc/
que especificam variáveis de ambiente; poderia ser definido em qualquer um deles.
Se o seu shell de login for ksh
, você verá que $TMOUT
é definido pelo próprio shell ksh.
Editar: para explicar alguns dos recursos menos óbvios da linha de comando acima:
O idioma find ... -print0 | xargs -0 ...
é bastante comum. O ponto de usar -print0
em vez do padrão -print
é que os nomes de arquivos são finalizados com um ASCII NUL no caso de -print0
. Isso significa que nomes de arquivos contendo uma nova linha serão representados corretamente. Passar a opção -0
para xargs
simplesmente faz com que xargs
entenda a mesma convenção.
A prática de passar /dev/null
rotineiramente como o primeiro argumento para grep
também vale a pena ser explicada. Como você só obtém o final do arquivo ao ler /dev/null
, ele nunca corresponderá a nenhuma string não vazia com grep
. Portanto, não haverá ocorrências para esse arquivo. Nós apenas o especificamos na linha de comando do grep para lidar corretamente com o caso em que a hora final xargs
é executada grep, existe apenas um arquivo restante a ser pesquisado. Se o grep tiver apenas um argumento de arquivo, ele listará as ocorrências sem especificar a linha de comando. Assim:
~/tmp/t$ echo hello > a
~/tmp/t$ echo hi > b
~/tmp/t$ grep '^h.*' a
hello
~/tmp/t$ grep '^h.*' a b
a:hello
b:hi