В профиле каждого пользователя системы (debian 8) я вызываю сценарий, который запускает сеанс машинописного текста, чтобы записать все в файл:
#!/bin/bash
script -f $HOME/.log/$(date +"%d-%b-%y_%H-%M-%S")_shell.log
Дело в том, что когда вы вводите "exit", вы просто останавливаете сеанс typscrit, а не ssh-соединение, поэтому вам нужно снова ввести exit. Я хотел бы закрыть ssh-соединение, когда мы выйдем из машинописного текста, введя "exit". Я пробовал разные вещи:
В конце моего сценария:
exit
or
logout
or
$(logout)
Все это возвращает ошибку после выхода из машинописного текста, например, с logout
или $(logout)
:
/pathtoscript/log.sh: 9: /pathtoscript/log.sh: logout: not found
Но это системная команда, поэтому мне просто нужно выполнить ее в системе в конце скрипта, и это должно быть хорошо!
в .bashrc:
function exit() { builtin exit && exit; }
Ничего не добавляется с этой функцией, когда я нажимаю "выйти", остановка машинописного текста, но не сеанс ssh.
Ваши вещи работают не так, как вы хотите, а именно так, как вы им сказали:
.profile берется из вашей оболочки, как если бы вы вводили каждый символ вручную. Если вы выполняете сценарий или другую программу в своей оболочке, вы ожидаете вернуться к приглашению, как только оно будет завершено. Это именно то, что вы переживаете.
Вы можете поместить выход в свой .profile, и он выйдет, как если бы вы набрали его в интерактивной оболочке. Тогда ваш .profile может выглядеть так:
# ... whatever comes before
script -f $HOME/.log/$(date +"%d-%b-%y_%H-%M-%S")_shell.log
exit
Удачной регистрации ваших пользователей!