У меня нет абсолютно никакого опыта работы с TermRecord
, мой ответ основан на разумном (я надеюсь, что так) предположении о том, что происходит.
Похоже, что TermRecord
снова получает исходники .bashrc
, или, скорее всего, он запускает другой bash
который получает файл. Я предполагаю последнее. В любом случае, он снова запускает TermRecord
, еще один bash
снова получает исходники .bashrc
и так далее.
Если это мешает вам войти в систему , см. Вход в систему без запуска bash_profile
или bashrc
. Я бы попробовал ssh -t username@hostname /bin/sh
и исправил бы мой .bashrc
оттуда.
Чтобы заставить его работать так, как вы ожидали, вам нужно найти способ подавить выполнение TermRecord
если он уже находится внутри TermRecord
. Лучше всего было бы, если бы программа добавила некоторую переменную в среду, чтобы вы могли ее обнаружить. Я не могу найти, устанавливает ли он какую-либо переменную.
Если это не так, вы можете сделать это самостоятельно. Вместо
TermRecord -o ss.html
в вашем .bashrc
используйте что-то вроде этого:
[ -z "$TR_PPID" ] && { export TR_PPID=$$; TermRecord -o ss.html; }
Это означает: если переменная пуста, установите для нее PID оболочки и запустите TermRecord
; в противном случае ничего не делать (перейти к следующей строке).
Заметки:
- Убедитесь, что переменная с именем
TR_PPID
не используется TermRecord
или чем-либо еще. Я придумал это имя (из "PID TermRecord parend"), хотя может быть и столкновение.
-o ss.html
может вызвать проблемы, если вы входите в систему несколько раз.
- Если
TermRecord
будет выполнен, остальная часть .bashrc
будет получена из внешнего bash
как только TermRecord
. Внутренний bash
будет источником файла самостоятельно.
- Чтобы избежать вложенных процессов, вы можете рассмотреть возможность замены внешнего
bash
на TermRecord
вместо создания отдельного процесса; это можно сделать с помощью exec TermRecord -o ss.html
. В этом случае вы, вероятно, захотите, чтобы вся строка была в самом начале вашего .bashrc
. Теперь переменная будет означать "TermRecord PID", поэтому TR_PID
будет лучшим именем.
Возможный(?) альтернатива: используйте TermRecord
качестве оболочки для входа.
- Только если он поддерживает оболочку входа в систему (я не знаю этого); в противном случае это может вызвать проблемы (но, возможно, пользовательская обертка исправит это). Эксперименты с изменением вашей оболочки входа в систему (см.
chsh
) должны выполняться, не покидая старой оболочки или даже с дополнительной "аварийной оболочкой". Если вы каким-либо образом блокируете себя и не можете войти заново, у вас все еще работает старая оболочка, и вы можете это исправить.
- Это может потребовать редактирования
/etc/shells
.
- В этом случае вы не должны запускать
TermRecord
из вашего .bashrc
вообще.