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_PPID
não seja usada porTermRecord
ou qualquer outra coisa. Eu fiz este nome (de "TermRecord parend PID"), pode haver uma colisão embora. - Codificado
-o ss.html
pode causar problemas se você efetuar login várias vezes. - Se
TermRecord
for executado, o restante de.bashrc
será originado pelobash
externo no final deTermRecord
. Obash
interno irá originar o arquivo por conta própria. - Para evitar processos de aninhamento, você pode considerar substituir o
bash
externo porTermRecord
em 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_PID
seria 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
TermRecord
do seu.bashrc
.