А logout в скрипте ничего не влияет, так как logout работает только для окон входа в систему, а сценарии обычно не запускаются как оболочки для входа.
Мне кажется, что вы «Зайти в систему через SSH (или что-то еще), работать как другой пользователь и немедленно выйти из системы. В этом случае просто отправьте сценарий, чтобы команды запускались в вашей текущей оболочке. Затем logout будет работать.
Или вы можете использовать exec, но в этом случае эффект logout не вступает в силу - logout потерпит неудачу, а конец сценарий просто заставляет его выйти. Различие без разницы, я полагаю.
Или, если вам кажется неудобным использовать . ./script, определите функцию с фигурными скобками:
switchuser () {
echo "test script"
sudo su -
exit
}
Команды в фигурных скобках выполняются в текущая оболочка и команды в круглых скобках выполняются в подклассе. Добавьте это к своему .bashrc, тогда вы можете просто сделать:
switchuser