Введення ~.
фактично робить трюк закриття всіх "вкладених" з'єднань до найглибших.
Це робиться при дружньому виході, який ви хочете, доки всі ваші снаряди налаштовані на обробку SIGHUP як витонченої смерті. Bash робить це за замовчуванням. Ви можете легко перевірити дружній вихід для налаштування, наприклад, побачивши, чи .bash_history
файли ваших більш глибоких сеансів оновлюються належним чином після ~.
, або якщо ви встановите, що ваші bash-es не оновлюються .bash_history після виходу, ви можете встановити trap
на EXIT подія (або у вашому ~/.bash_logout
) з командою, яка щось десь записує, і пізніше подивіться, чи вона виконується.
Крім того, я не впевнений, що ви маєте на увазі під "закриттям усіх сеансів у поточній оболонці". Кожен інтерактивний баш - це лише один сеанс, а команди, які ви вводите, завжди йдуть лише до найглибшої оболонки ланцюга ProxyJump. Якщо ви мали на увазі "фонові завдання в поточній оболонці", bash посилає SIGHUP на всі свої завдання при отриманні SIGHUP від демона ssh після ~.
, тому такий вихід повинен бути повністю доброзичливим, якщо ті, що виконують завдання, реагують належним чином на SIGHUP.
~.
просто відключає ваш клієнт SSH (корисно, наприклад, коли мережа зникла, наприклад). Зазвичай демон SSH розпізнає це і сигналізує про його сеансSIGHUP
, тому це не зовсім те саме, що звичайно вийти з оболонки (але це корисно, якщо ви не можете отримати жодної відповіді від оболонки).