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

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

  • Как я могу запустить этот запуск / init как пользователь без root?
  • Как инвертировать счет, возвращенный из grep?
  • Как вырезать все до определенного слова / после поиска в скрипте
  • dash: строка синтаксического анализа на две переменные
  • Какова цель иметь две переменные ($ @, $ *) для передачи аргументов команды в скрипт?
  • Простой сценарий оболочки для отправки сообщения сокета
  • Как вы создаете команду grep & для соответствия ряду шаблонов в зависимости от того, сколько из них предусмотрено во время выполнения?
  • Как найти уникальное слово в одной строке
  • 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, поэтому по этому стандарту я должен называться новичком. Любые улучшения в ответе оцениваются, если вы найдете что-то не так.

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