выйти из сценария оболочки

Я выполняю некоторую операцию через скрипт оболочки. Если этот сценарий успешный, продолжите еще один выход из текущего пользователя. Я не могу найти способ выхода из системы текущего пользователя. Я попытался использовать exit, но похоже, что он выходит из текущего процесса, а не из оболочки. PS: Я не могу использовать pkill, чтобы убивать сеанс для текущего пользователя, поскольку существует много процессов, которые проходят через этого пользователя, так как это общий пользователь. Кроме того, поскольку это общий пользователь, несколько других членов команды могут войти в систему через этого пользователя, и это может также убить их сеанс.

  • Найти файлы, для которых несколько вариантов этого имени файла существуют вместе в одном каталоге
  • Назначение переменной из файла, разделенной разделителем
  • Документ с отступом здесь вызывает синтаксическую ошибку
  • Сравните два журнала по строкам и покажите различия, и если порядок слов из строки не совпадает
  • Почему значение IFS удаляется из файла при расщеплении?
  • Как разобрать строку в bash на переменные, используя вкладку в качестве разделителя и сохранить пробелы?
  • Как установить несколько значений в одну и ту же переменную в UNIX?
  • Почему (echo ""; exit 1) не выходит из сценария?
  • 4 Solutions collect form web for “выйти из сценария оболочки”

    Если сценарий предназначен для той же оболочки, что и тот, который вы используете при его запуске, вы можете просто запустить его вместо запуска в качестве нового процесса, а затем exit должен успешно выйти из системы.

    т.е. вместо ./script.sh вы используете source ./script.sh . Причиной этого различия является то, что source является встроенной командой shell, которая заставляет вашу текущую оболочку выполнять команды в файле, если вы запускаете скрипт без источника, для его создания создается новый процесс, и поэтому выход из него не выходит из вашего оболочка.

     alias exit='./your_script && exit' 

    Попробуйте эту команду:

     killall gnome-session 

    Прежде всего, давайте проясним некоторые основы, прежде чем я начну свой ответ

    насколько мне известно

    1. Один терминал может иметь только одну оболочку для входа, однако несколько пользователей могут использовать один и тот же терминал с оболочкой без входа.
    2. Эта оболочка для входа может быть TTY или PTS ( разница между tty и pts )
    3. В оболочке входа в систему могут быть другие оболочки, не входящие в систему (например, оболочки для входа и выхода без входа )
    4. exit для выхода из оболочки без входа (вы не можете выйти из оболочки без входа)
    5. logout для выхода из TTY ( logout может использоваться только с помощью оболочки входа)
    6. Как проверить, находитесь ли вы в терминале входа или без входа

    Если вы находитесь в TTY

     (./your_script && <task_you want_to_continue>) || logout 

    или

     (./your_script && <task_you want_to_continue>) || exit 

    Если вы находитесь в PTS

     (./your_script && <task_you want_to_continue>) || who -u; echo 'enter PID of login shell user you want to logout'; read PID; kill $PID; 

    Источник выше ответа

    Удалите теги «<» и «>» и разместите свою задачу в приведенных выше сценариях.

    Я не знаю, почему logout и exit не работают на PTS, как в TTY, но я надеюсь, что это решит вашу проблему.

    Мне было около 4 месяцев в Linux, поэтому по этому стандарту я должен называться новичком. Любые улучшения в ответе оцениваются, если вы найдете что-то не так.

    Interesting Posts

    Что является лучшим вариантом для использования ОС на ноутбуке: Linpus Linux или Linux?

    Границы внешнего монитора ограничены «вне» монитора ноутбука

    «Grep» доступное пространство с выхода «df»

    Как повернуть набор изображений из командной строки?

    Вызов `source` из функции bash

    Команда crontab rtcwake не работает

    Привязать ключ к пользовательскому скрипту в feh

    Что означает vRS = "\ n20" в командной строке gawk?

    Могу ли я иметь разные настольные каталоги на разных рабочих станциях в Gnome?

    Как получить пароль без пароля ssh между любыми двумя узлами в кластере серверов

    Безопасны ли бесплатные учетные записи?

    Почему * соответствует, где нет цифр?

    ошибка аутентификации входа в систему "пользователем, не являющимся пользователем root, может войти только в root

    получить приблизительный размер каталога (рекурсивно, включая все файлы и подкаталоги)

    Извлечение файла образа DDrescue после прохождения 1

    Linux и Unix - лучшая ОС в мире.