Eu não acho que seja totalmente possível.
Você pode descobrir qual é o processo pai e quais são os parâmetros da linha de comando, mas no final do dia, ao executar um shell interativo, o processo pai dos programas executados a partir do script de inicialização é o mesmo dos programas executados. interativamente.
Se apenas onde a execução do .profile
você poderia detectar isso pelo fato de que /etc/bashrc
é originado depois disso (em que você poderia colocar um comando para parar de ignorar execuções deste shell).
Outra abordagem poderia ser verificar o horário de início do processo pai. Frequentemente, a execução interativa de um comando seria feita um pouco depois que o shell fosse iniciado, enquanto os scripts init seriam executados logo após o início do shell.
Uma ideia mais elaborada é substituir /bin/bash
por um wrapper que controla a origem dos arquivos de inicialização de uma maneira mais personalizada (a ideia é semelhante à primeira ideia, mas para conseguir que você execute o comando após .bashrc
). Eu não sei se isso é uma boa ideia, mas pelo menos você deve ter muito cuidado se fizer isso.