У меня нет абсолютно никакого опыта 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
.