Eu não tenho absolutamente nenhuma experiência com TermRecord , minha resposta é baseada em uma suposição razoável (espero que sim) sobre o que acontece.
Ele parece como TermRecord sources .bashrc novamente, ou é mais provável que ele execute outro bash que origina o arquivo. Eu assumo o último . De qualquer forma, ele executa TermRecord novamente, mas outro bash sources .bashrc novamente e assim por diante.
Se isso impedir você de fazer login, consulte Login sem executar bash_profile ou bashrc . Eu tentaria ssh -t username@hostname /bin/sh e fixaria meu .bashrc de lá.
Para que funcione como esperado, você precisa encontrar uma maneira de suprimir a execução de TermRecord se já estiver dentro de TermRecord . A melhor maneira seria se o programa adicionasse alguma variável ao ambiente, para que você pudesse detectá-la. Não consigo encontrar se define ou não qualquer variável.
Caso isso não aconteça, você pode fazer isso sozinho. Em vez de
TermRecord -o ss.html
no seu .bashrc use algo assim:
[ -z "$TR_PPID" ] && { export TR_PPID=$$; TermRecord -o ss.html; }
Isso significa que: se a variável estiver vazia, configure-a para o PID do shell e execute TermRecord ; caso contrário, não faça nada (continue na próxima linha).
Notas:
- Certifique-se de que a variável denominada
TR_PPIDnão seja usada porTermRecordou qualquer outra coisa. Eu fiz este nome (de "TermRecord parend PID"), pode haver uma colisão embora. - Codificado
-o ss.htmlpode causar problemas se você efetuar login várias vezes. - Se
TermRecordfor executado, o restante de.bashrcserá originado pelobashexterno no final deTermRecord. Obashinterno irá originar o arquivo por conta própria. - Para evitar processos de aninhamento, você pode considerar substituir o
bashexterno porTermRecordem vez de criar um processo separado; isso pode ser feito comexec TermRecord -o ss.html. Nesse caso, você provavelmente desejará que toda a linha esteja no início de seu.bashrc. Agora a variável significaria "TermRecord PID", entãoTR_PIDseria um nome melhor.
Alternativa possível (?): use TermRecord como seu shell de login.
- Apenas se ele suportar ser um shell de login (não sei disso); caso contrário, pode causar problemas (mas talvez um wrapper personalizado o conserte). As experiências com a alteração do seu shell de login (consulte
chsh) devem ser executadas sem sair do shell antigo ou até mesmo com um "shell de emergência" extra. Se você, de alguma forma, se trancar e não conseguir logar novamente, ainda terá o shell antigo em funcionamento e poderá consertá-lo. - Isso pode exigir a edição
/etc/shells. - Nesse caso, você não deve começar a
TermRecorddo seu.bashrc.