Como eu determino qual arquivo chama um comando bash no login?

0

Sou estudante de ciência da computação no Mac OSX El Capitan. Meu amigo fez isso para que meu computador execute say 'heil hitler' sempre que eu fizer login em uma nova instância do Terminal. Escusado será dizer que eu preciso me livrar disso. Por agora, renomei / usr / bin / say para / usr / bin / 0say para evitar que ele seja ativado em público. Eu verifiquei ~ / .bash_profile, ~ / .bashrc, ~ / .login, / etc / bashrc. Existem outros arquivos executados automaticamente no login do bash?

Além disso, como posso descobrir qual arquivo de configuração está realmente chamando um determinado comando?

    
por Dumonu 10.12.2016 / 08:15

3 respostas

0

Use o comando set , página man aqui . Especificamente:

  • set -x para mostrar comandos após a expansão, pouco antes da execução

  • set -v para mostrar comandos conforme são lidos antes da expansão

Por exemplo, insira set -xv no topo de seu ~ / .profile e você verá tudo o que seu terminal está fazendo depois dessa linha. Você pode capturar essa saída (ou copiar e colar do Terminal em um documento de texto) e fazer algo como grep -B 4 hitler para ter uma ideia de onde ela está.

    
por 10.12.2016 / 22:58
1

Várias técnicas de investigação vêm à mente:

  • Além dos arquivos init do shell que você examinou, verifique ~/.profile , ~/.bash_login e /etc/profile .

  • Para os arquivos init por usuário, tente desabilitá-los renomeando; Se a remoção de um arquivo específico impedir que ele execute say , você sabe que é algo nesse arquivo. Você também pode colocar um comando return no meio de um arquivo init para ver se a chamada para say é antes ou depois desse ponto.

  • Você pode adicionar set -x em um arquivo init, e ele fará com que o shell imprima comandos à medida que os executa; facilita a execução do rastreamento.

  • Pesquisa de força bruta na sua pasta pessoal: grep -r hitler ~

por 10.12.2016 / 20:33
0

Parece que você já resolveu o problema, mas eu também verifiquei o atalho do Terminal. Poderia ter sido substituído por qualquer número de atalhos de script, sendo o AppleScript o mais provável, para executar essa brincadeira.

    
por 13.12.2016 / 21:15