Избавьтесь от команды
rename exit ""
Или переопределите ее, чтобы сообщить пользователю, что она отключена:
proc exit {args} { error "The exit command is not available in this context" }
Стоит также рассмотреть запуск кода пользователя в безопасное взаимодействие вместо основной оболочки.Это позволит вам точно контролировать, к чему у пользователя есть доступ.
Вы также можете создать дочерний интерфейс (небезопасный) и просто отключить команду выхода для этого интерфейса.
Наконец, вы можете просто переименовать выход на что-то другое, если вы только пытаетесь избежать того, чтобы пользователи вводили его по ошибке:
namespace eval ::hidden {}
rename exit ::hidden::exit